Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 3
Ir a la página 1, 2, 3  Siguiente
 
[Solucionado] Datos En Un TableView, Cantidad Máxima?
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje [Solucionado] Datos En Un TableView, Cantidad Máxima? 
 
Hola a todos, ando trabajando con una mysql de clientes, con más de 20.000 clientes y al cargarlos a la tableview todo se relantiza demasiado.
Algun truco para aumentar la velocidad de carga, busqueda en el grid y filtrado?
 



 
última edición por arubioc el Lunes, 27 Febrero 2012, 18:06; editado 1 vez 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Datos En Un TableView, Cantidad Máxima? 
 
Asi a bote pronto y sin saber mucho del problema me parece que lo ideal para aumentar la velocidad seria que no cargases la base entera si no que la dividieses para mostrarla por ejemplo como si fuera un listin de teléfonos en los que buscas segun la inicial asi solo tendrias que cargar los que empezasen por esa inicial, pero si expones más el problema quizas podamos encontrar una solución mejor.
 




===================
Un saludo.
===================
e-mail:
Web: Miguel Morera Belenguer
Twiter: @miguelmorerab
 
GilGalad - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Datos En Un TableView, Cantidad Máxima? 
 
Gracias por la idea, básicamente el programa carga primero como una hoja excel con 9 de los campos de la base de datos de cliente y los 20.000 registros.
La gracia de hacerlo así es la posibilidad de poder ordenar los registros pulsando las columnas, pero claro con tanto dato, parece que la máquina no tira lo suficiente i es un 4 nucleos con 4Gb RAM.
Cargarla por partes es una posible solucion pero los scrolls pierden funcionalidad así como los filtros por campos.

Solo para cargar la pantalla de la lista de clientes tarda más de 20 segundos.... una eternidad hoy en dia.
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Datos En Un TableView, Cantidad Máxima? 
 
La solución al problema que planteas es bien sencilla. Hay que usar el evento _Data() del gridview para cargar los datos de tu BD, de esta manera realmente lo que se carga son solamente los datos visibles del gridview.

Así explicado parece poco comprensible, pero es sencillo de entender. Si tu gridview dentro de tu formulario tiene n columnas visibles y nn filas visibles, el evento Data se encargará de cargar solamente los datos provenientes de la Base de Datos que sean visibles en ese momento en el gridview, resultando en una rapidez increíble al hacer scroll sin importar el número de registros que contenga la BD.

Hay numerosos ejemplos y explicaciones en el foro, sólo tienes que realizar una búsqueda por los términos "evento _Data":

http://foro.gambas-es.org/viewtopic.php?p=3273#p3273

http://gambasdoc.org/help/comp/gb.qt/gridview/.data?es

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: Datos En Un TableView, Cantidad Máxima? 
 
Esta es la solución exacta a mi problema, aun que no consigo entender muy bien como funciona.

En algun sitio debere decirle que cargue los datos del "result" al gridview!!
En el ejemplo que has pegado no veo donde se hace eso.

Te pego parte del código que yo uso a ver si ves que es lo que hago mal.
Gracias de antemano.

FMain.rs = Fmain.cn.Exec("SELECT cliente_id, cliente_provincia,cliente_nombre_fiscal, cliente_domicilio, cliente_cp, cliente_poblacion, cliente_contacto, cliente_telefono1, cliente_email FROM clientes")
FMain.rs.MoveFirst
  
  GridView1.visible = FALSE
  GridView1.Rows.Count = FMain.rs.count
  
*antes lo hacia por buble****** de todos los datos
  'FOR a = 0 TO FMain.rs.Max
  '  GridView1[a, 0].Text = FMain.rs!cliente_id
  '  GridView1[a, 1].Text = FMain.rs!cliente_nombre_fiscal
  '  GridView1[a, 2].Text = FMain.rs!cliente_domicilio
  '  GridView1[a, 3].Text = FMain.rs!cliente_cp
  '  GridView1[a, 4].Text = FMain.rs!cliente_poblacion
  '  GridView1[a, 5].Text = FMain.rs!cliente_provincia
  '  GridView1[a, 6].Text = FMain.rs!cliente_contacto
  '  GridView1[a, 7].Text = FMain.rs!cliente_telefono1
  '  GridView1[a, 8].Text = FMain.rs!cliente_email
  '  FMain.rs.MoveNext
  'NEXT
  funciones.colorearGrid(GridView1, 16777215, 0, 14678209, 0)
  GridView1.visible = TRUE
END

PUBLIC SUB GridView1_Data(Row AS Integer, Column AS Integer)
      Fmain.rs.MoveTo(Row)
***aQUI DEBE FALTAR ALGO QUE CARGUE LOS DATOS, NO?
END

 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Datos En Un TableView, Cantidad Máxima? 
 
Posiblemente esto es lo que te falte...


PUBLIC SUB GridView1_Data(Row AS Integer, Column AS Integer)
' este evento se encarga de dibujar los datos en el gridviews, para que aparezcan en la pantalla.
 Fmain.rs.MoveTo(Row)

 GridView1.Data.text = Str(Fmain.rs[ GridView1.Columns[column].text])

END


Mirate el ejemplo que hice de consulta medica, a lo mejor te puede ayudar.
Enlace videotutoriales de consulta medica
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Domingo, 19 Febrero 2012, 19:31; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Datos En Un TableView, Cantidad Máxima? 
 
Me he mirado los videos del tema de la consulta, en el tercer video es donde explicas lo que necesito hacer, pero hay un problema.
Todo y modificando el código como me has puesto, ele evento _data no se me dispara.
He puesto un message de control en la funcion para ver por alli pasa, pero no entra.

he de configurar algo o cambiar alguna propiedad del control?
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Datos En Un TableView, Cantidad Máxima? 
 
Nota Importante:
El evento DATA no se dispara si el gridView no esta en Visible.

Aun así hay 2 problemas:

1. Generar tantas rows como registros de la base de datos, es lo que hace que tarde mucho, esten llenos o vacios.
2. Solo aparecen los 24 o 26 registros de la base de datos, y a la que haces scroll, no se recalculan los siguientes registros y me aparecen las filas en el gridview vacias.
 



 
arubioc - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Datos En Un TableView, Cantidad Máxima? 
 
Citar:
he de configurar algo o cambiar alguna propiedad del control?


Si, se debe de alterar el nº de filas, por ejemplo cuando se ejecuta una consulta, igualando el contador de filas del gridview, con el numero de registros del resultado

'para cuando insertar, borrar, o cargas unos registros en un gridview
GridView1.Rows.count = Fmain.rs.Count


Y esto hara que se dispare el evento DATA. Cuando Insertar, borras un registro, este método es valido.

Pero...Cuando editas un registro, no va a cambiar el nº de registros (ya que solo estas editando..), yo lo que hago es: primero lo igualo a 0 y luego lo vuelvo a cambiar:

'para cuando editas un registro, de esta forma haces que se dispares el evento DATA
GridView1.Rows.count = 0
 GridView1.Rows.count = Fmain.rs.Count

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Domingo, 19 Febrero 2012, 20:55; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Datos En Un TableView, Cantidad Máxima? 
 
Este es un ejemplo más simple del uso de evento DATA:
gridviews-el-evento-data-mostrar

Ahi puedes ver, la potencia de este evento.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
última edición por jsbsan el Domingo, 19 Febrero 2012, 21:00; editado 1 vez 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 3
Ir a la página 1, 2, 3  Siguiente

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