https://foro.gambas-es.org/viewtopic.php?f=3&t=6655
-----------------------------------
rescobar
Miercoles, 04 Octobre 2017, 19:42

[SOLUCIONADO]Error Visual Al Usar DataSource Y DataBrowser
-----------------------------------
Buenas.

Tengo la gestion de los articulos como se muestra en la sguiente captura de pantalla:

 [img]https://foro.gambas-es.org/files/images/3134/captura_de_pantalla_de_2017_10_04_20_21_56.png[/img] 

EL problema me aparece cuando pulso el boton EDITAR, le cambio el nombre a ACTUALIZAR, ademas de cargar el el Codigo, Nombre y Familia. 
Tambien lleno el listbox de la derecha donde esta la composicion del articulo (aun tengo que etiquetar los listbox).

Si cambio de pestaña o paso el puntero por el Databrowser, en  todos los campos de los Databrowser de las otras pestañas ademas de este se llena con el error en rojo "Dataview.Tableview.Data.420. Null Objet" se ve en la siguiente imagen:

 [img]https://foro.gambas-es.org/files/images/3134/captura_de_pantalla_de_2017_10_04_20_22_14.png[/img] 

Es solo visual ya que si pulso en ACTUALIZAR realizo las acciones actualizo los controles todo vuelve a la normalidad.

No se si es un Bug o si estoy haciendo algo mal.

Lo unico que hago con el control es posicionarme en el DataBrowser y sacar los datos, pongo un trozo del codigo donde uso el control DataBrowe que se llama DtbArticulos.

[code linenumbers=false syntax=gambas]

Numero_fila = DtbArticulos.View.Row ' Posicion del DtbArticulos
  If BtnEditarArticulo.Text = "EDITAR" Then
    BtnEditarArticulo.Text = "ACTUALIZAR"
    TxtCodigoArticulo.Text = DtbArticulos.View[Numero_fila, 0].Text
    TxtNombreArticulo.Text = DtbArticulos.View[Numero_fila, 1].Text
    CmbFamiliaArticulo.Text = DtbArticulos.View[Numero_fila, 2].Text

[/code]

En los otros tab FAMILIAS y MATERIA PRIMA hago lo mismo y no me aparece el error solo aqui. Si quereis ver todo el codigo asociado a dicho boton lo pongo.

Saludos.


-----------------------------------
shordi
Miercoles, 04 Octobre 2017, 19:55

Re: Error Visual Al Usar DataSource Y DataBrowser
-----------------------------------
Por mi parte no utilizo esos controles, por lo que poco te puedo ayudar. Pareciera que descoordinas lo que se ver en pantalla con la fuente de datos... pero no sé qué puedes estar haciendo mal. 
Un pequeño consejo: Cuando ya no sepas por dónde tirar, haz un proyecto nuevo simplificado al máximo intentando reproducir el error. Muchas veces eso te da claridad sobre el problema y se resuelve solo, si no es así, siempre puedes subir al foro ese pequeño proyecto para su evaluación por los foreros.

Saludos


-----------------------------------
jsbsan
Miercoles, 04 Octobre 2017, 20:55

Re: Error Visual Al Usar DataSource Y DataBrowser
-----------------------------------
rescobar:

[quote]
Si cambio de pestaña o paso el puntero por el Databrowser ...... 
si pulso en ACTUALIZAR realizo las acciones actualizo los controles todo vuelve a la normalidad.[/quote]
Una solución "cutre" seria hacer click por software en el boton Actualizar cuando cambias de pestañas o mueves el puntero por el Databrowser (evento _Enter() de Databrowers, creo que existe para ese control):

[code linenumbers=false syntax=gambas]...
BotonActualizar_click()
...
[/code]


-----------------------------------
rescobar
Miercoles, 04 Octobre 2017, 22:06

Re: Error Visual Al Usar DataSource Y DataBrowser
-----------------------------------
Buenas.

Ya lo  he solucionado, he configurado de nuevo el DataSource. Pongo el código del botón.

[code linenumbers=false syntax=gambas]
ublic Sub BtnEditarArticulo_Click()
  Dim Sql As String
  Dim Numero_fila As Integer
  Dim Contador As Integer
  Dim C_MateriaPrima As String
  Dim i As Integer
  Numero_fila = DtbArticulos.View.Row ' Posicion del DtbArticulos
  If BtnEditarArticulo.Text = "EDITAR" Then
    BtnEditarArticulo.Text = "ACTUALIZAR"
    TxtCodigoArticulo.Text = DtbArticulos.View[Numero_fila, 0].Text
    TxtNombreArticulo.Text = DtbArticulos.View[Numero_fila, 1].Text
    CmbFamiliaArticulo.Text = DtbArticulos.View[Numero_fila, 2].Text
    BtnAgregarArticulo.Enabled = False
    BtnBorrarArticulo.Enabled = False
    TxtCodigoArticulo.Enabled = False
    TxtNombreArticulo.SetFocus
    ' Llenamos el Listbox con las materias primas.
    sql = "select * from articulomateriaprima where articulo='" & TxtCodigoArticulo.text & "'"
    Llenar_Composicion_Articulo_MateriaPrima(sql)
    Eliminar_Materia_Prima_Listboxmp()
    DtsArticulos.Table = "articulo"
    DtbArticulos.View.Columns[0].width = 100
    DtbArticulos.View.Columns[1].width = 150
    DtbArticulos.View.Columns[2].width = 200
  Else
    ' Comprobamos que los datos son correctos
    If Comprobar_Campos_Articulos("MODIFICAR") Then
      ' Actualizamos los campos del Articulo
      sql = "update articulo set nombre='" & UCase(TxtNombreArticulo.text) & "',familia='" & UCase(CmbFamiliaArticulo.Text) & "' where codigoarticulo='" & UCase(TxtCodigoArticulo.Text) & "'"
      Utilidades.In_Act_Bor(sql)    
      ' Borramos Las materias primas que componen este articulo y añadimos las que tengamos en el ListBox de composicion
      sql = "delete from articulomateriaprima where articulo='" & TxtCodigoArticulo.text & "'"
      Utilidades.In_Act_Bor(Sql)
      Contador = LtBKMPComposicion.Count
  
      For i = 0 To Contador - 1
        sql = "select * from materiaprima where nombre='" & LtBKMPComposicion[i].Text & "'"
        C_Materiaprima = Utilidades.Obtener_Campo_Tabla(sql, "codigomateriaprima")
        sql = "insert into articulomateriaprima (articulo,materiaprima) values('" & UCase(TxtCodigoArticulo.Text) & "','" & UCase(C_Materiaprima) & "')"
        Utilidades.In_Act_Bor(Sql)
      Next
    Endif
    BtnAgregarArticulo.Enabled = True
    BtnBorrarArticulo.Enabled = True
    TxtCodigoArticulo.Enabled = True
    BtnEditarArticulo.Text = "EDITAR"
    TxtCodigoArticulo.Text = ""
    TxtNombreArticulo.Text = ""
    CmbFamiliaArticulo.text = ""
    DtbArticulos.Enabled = True
    LtBKMPComposicion.clear
    Configurar_Tab_Articulos("TODO")
  Endif
End
[/code]

Esto es lo que he añadido

[code linenumbers=false syntax=gambas]
DtsArticulos.Table = "articulo"
DtbArticulos.View.Columns[0].width = 100
DtbArticulos.View.Columns[1].width = 150
DtbArticulos.View.Columns[2].width = 200
[/code]

Me da la impresión que es un Bug.

Gracias por las ideas al leerlas se me ha ocurrío probar esto.

Saludos.


