Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Como Controlar El Evento Data De Gridview?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Como Controlar El Evento Data De Gridview? 
 
Hola a todos,

Estoy desarrollando una aplicación personal para gestionar la compras que realizo, utilizando una base de datos sqlite con tres tablas.
El caso es el siguiente:
Tengo un formulario con un tabPanel de dos pestañas, en la primera pestaña hay un gridView(1) que muestra los datos de la tabla compras y en la segunda pestaña otro gridView(2)  que va a mostrar los datos de la tabla DetalleCompras.

Y funciona de la siguente manera:
al iniciar el formulario se muestra la pestaña1, carga el gridView1 y muestra todas las compras,  al selecionar una de ellas y pasar a la pestaña2
se carga el gridView2 y muestra los detalles de la compra que se seleciono en el gridview1
 captura_de_pantalla_2016_06_16_15_48_41  captura_de_pantalla_2016_06_16_15_49_35

Para rellenar ambos Grids realizo la consulta y mediante el evento data.
Private Sub cargar(consulta As String) 'Aqui se realiza la consulta a la tabla Compras
Dim f, c As Integer
Try desconectar
conectar
    If consulta = "" Then
        rs = cn.Exec("Select * From Compras order by FechaCompra")
    Else
        rs = cn.Exec(consulta)
    Endif
    GridView1.Rows.Count = rs.Count
End

Public Sub GridView1_Data(Row As Integer, Column As Integer) ' Aqui re rellena el gridView1 con los resultados obtenido
   rs.moveTo(row)
    GridView1.Data.text = Str(rs[GridView1.Columns[column].text])
End

Public Sub TabPanel1_Click() 'Al cambiar de pestaña se realiza la consulta a la tabla detalleCompras
Dim f As Integer, id As String
Try desconectar
conectar
    If TabPanel1.Index = 1 Then
        If GridView1.Rows.Selection.Count <> 0 Then
            id = GridView1[GridView1.Rows.Selection[0], 0].Text ''AQUI SE LANZA DE NUEVO EL EVENTO DATA DEL GRIDVIEW1
            rs = cn.Exec("select DetalleCompras.IdDetalle, Productos.Nombre as 'Producto', DetalleCompras.Cantidad, DetalleCompras.Monto From DetalleCompras, Productos where Productos.IdProductos = DetalleCompras.IdProducto And DetalleCompras.IdCompra = &1 ", id)
            GridView2.Rows.Count = rs.Count
        Endif
    Endif
End

Public Sub GridView2_Data(Row As Integer, Column As Integer) 'Aqui se rellana el GridView2 con los resultados obtenidos
   rs.moveTo(row)
    GridView2.Data.text = Str(rs[GridView2.Columns[column].text])
End
 


El problema surge que al interactuar con los datos del gridView1 se vuelve a lanzar el evento data y genera un error debido a que ya no existe datos en la variable rs y cuelga el programa, o vacia por completo el gridView1.

Alguna idea de como controlar el evento Data?
 



 
vr_rv - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Controlar El Evento Data De Gridview? 
 
No es que pueda ayudarte tanto como quisiera.

Creo que podrías reducir parte de código. Podrías usar un grupo para los Gridviews, que tuvieran
un código común. Para el evento Data te vendría bien. El evento es el mismo para los dos Gridviews.

Necesitas usar la propiedad Tag y Last de cada Gridview.
Por ejemplo, imagina que tienes dos botones, que son parte del grupo "Botones"
Cada botón tiene una propiedad distinta de tag.

El botón de saludar tiene la propiedad tag como valor 0 y el botón despedir tiene el
valor de la propiedad tag a 1.

El evento Click es el mismo para los dos, pero no repites código.

Public Sub Botones_Click()

  Select Case Last.tag
    Case 0
      Message("Hola")
    Case 1
      Message("Hasta pronto")
  End Select

End
 


Eso por ahora.  

En TabPanel1, cuando el índice es 0, ¿ que hace ?. ¿ Solo funciona con el 1 ?.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Controlar El Evento Data De Gridview? 
 
Hola, vr_rv

Creo que tu problema ocurre porque desconectas la base de datos dentro del evento click del tabpanel. El estar la conexión cerrada, el objeto result no puede devolver datos, provocando otros efectos colaterales.

No deberías desconectar de la base de datos hasta que vayas a salir de tu programa, te lo digo por experiencia.

Saludos
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Controlar El Evento Data De Gridview? 
 
Dos GridView. Dos Eventos_Data. Un sólo Result...

mmmm... asigna un result a cada gridview y no tendrás problemas.

Además de lo que dice jguardon, Tanto cerrar y abrir la base de datos te enlentece mucho el asunto. Déjala abierta.

Saludos.
 




===================
No podemos regresar
 
última edición por shordi el Jueves, 23 Junio 2016, 20:03; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Controlar El Evento Data De Gridview? 
 
jguardon escribió: [Ver mensaje]
Hola, vr_rv

Creo que tu problema ocurre porque desconectas la base de datos dentro del evento click del tabpanel. El estar la conexión cerrada, el objeto result no puede devolver datos, provocando otros efectos colaterales.

No deberías desconectar de la base de datos hasta que vayas a salir de tu programa, te lo digo por experiencia.

Saludos


Cuando comence a trabajar con conexiones a bases de datos constantemente sufria errores de conexion, por dejar abierta la conexion o por no abrirla, razon por la cual adopte la costumbre de tratar de cerrar la conexion y abrirla en cada funcion que necesitara consultar la base de datos.
ahora tendre que cambiar mi costumbre.

Gracias por el consejo jguardon
 



 
vr_rv - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Controlar El Evento Data De Gridview? 
 
shordi escribió: [Ver mensaje]
Dos GridView. Dos Eventos_Data. Un sólo Result...

mmmm... asigna un result a cada gridview y no tendrás problemas.

Además de lo que dice jguardon, Tanto cerrar y abrir la base de datos te enlentece mucho el asunto. Déjala abierta.

Saludos.


Gracias Shordi. ya pude solucionar. efectivamente agregando un Result para cada envento Data ya funciona todo correctamente.

En cuanto sea mas o menos funcional el programa lo subo al foro para que le puedan dar un vistazo...
 



 
vr_rv - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Como Controlar El Evento Data De Gridview? 
 
vr_rv escribió: [Ver mensaje]
sufría errores de conexión, por dejar abierta la conexión o por no abrirla, razon por la cual adopte la costumbre de tratar de cerrar la conexión y abrirla en cada función que necesitara consultar la base de datos.
ahora tendré que cambiar mi costumbre.


Puede que haya motores de bases de datos que tras un tiempo de inactividad cierren automáticamente la conexión. No sé si es el caso de sqlite, aunque a mí nunca me ha pasado. En cualquier caso, crea una rutina de conexión que abra la base de datos en caso de no estar ya abierta y asunto solucionado. Úsala cada vez que vayas a realizar una consulta (o mejor al principio del procedimiento que lance las consultas), ya que sólo abrirá la base si está desconectada. Al salir del programa, por ejemplo en el evento form_close del form principal, cierra las conexiones y listo.

Repito, nunca he tenido problemas por mantener abierta una conexión, pero sí al contrario: por cerrarlas.

Saludos

P.D. Por si acaso te sientes tentado de abrir o cerrar una conexión dentro del evento Data, quedas advertido de los efectos inesperados, casi apocalípticos que se podrían desencadenar...         
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Mas Sobre GridView Heredado Y Su Evento Data shordi Controles/Librerías/Componentes 6 Martes, 05 Octobre 2010, 11:34 Ver último mensaje
shordi
No hay nuevos mensajes Problema Con El Evento Data De GridView. D... Shell General 15 Sabado, 22 Noviembre 2014, 00:21 Ver último mensaje
Shell
No hay nuevos mensajes Evento Data, Colorear Celdas Y Ver Texto Shell General 13 Sabado, 28 Noviembre 2015, 14:37 Ver último mensaje
Shell
No hay nuevos mensajes Evento Data imagomundi Controles/Librerías/Componentes 2 Lunes, 06 Abril 2020, 02:04 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron