Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Consulta SQL lenta con 10 000 registros

Hola buen dia a todos.

En mi programa realizo una consulta que me devuelve toda una tabla que contiene 10 000 registros y los coloco en 3 listbox pero se torna muy lento. Uso mysql como motor de base de datos y uso los componentes Zeos Lib

Mi codigo es este:

Código Delphi [-]
ZQuery1.Close;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('SELECT * FROM productos ORDER BY nombre ASC');
  ZQuery1.Open;
  ZQuery1.First;
  while not ZQuery1.Eof do
  begin
     ListBox1.Items.Add(ZQuery1.FieldByName('id').AsString);
     ListBox2.Items.Add(ZQuery1.FieldByName('nombre').AsString);
     ListBox3.Items.Add(FloatToStrF(ZQuery1.FieldByName('precio').AsFloat, ffNumber, 4, 2));
     ZQuery1.Next;
  end;

Mi consulta mediante phpmyadmin tarda 0.5 seg entonces creo que el problema esta al llenar los listbox pero no tengo idea de como optimizarlo ...

Gracias por su tiempo .
Responder Con Cita
  #2  
Antiguo 19-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

¿ Y no te sirve usar el equivalente Zeos del TDBLookupComboBox ? De ese modo te estarías ahorrando la carga de los ListBox.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
ecfisa .. voy a checar si carga mas rapido y comento gracias ...
Responder Con Cita
  #4  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
ecfisa .. Disculpa pero como se usa el TDBLookupComboBox .. no encuentro ejemplos :S ... gracias
Responder Con Cita
  #5  
Antiguo 19-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.105
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y pregunto: ¿para qué se puede necesitar tener 10000 registros en un listbox o un combobox o un... lo que sea?
Responder Con Cita
  #6  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Pues mira el programa es para una tienda de abarrotes entonces tengo una base de datos con 10 000 articulos, entonces cuando el programa se inicia en el formCreate pues lleno los 3 listbox.

Y si por ejemplo agrego un nuevo articulo, modifico o elimino un articulo de la base de datos el form principal pues lo tengo que refrescar con los nuevos datos ..
Responder Con Cita
  #7  
Antiguo 19-11-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

¿ Y no te sirve usar el equivalente Zeos del TDBLookupComboBox ? De ese modo te estarías ahorrando la carga de los ListBox.

Un saludo.
Y que ganas con los 10.000 artículos cargados en el ListBox, aparte de consumir memoria innecesariamente, Cuando el cliente elija un artículo de tu ListBox en el 7501, ¿que tienes que leer tú? los 7500 restantes para localizar tal artículo, nose pero creo que la solución que te ha dado ecfisa, creo que es la correcta.

Por que no realizar una búsqueda con una SQL por medio de un Edit, el resultado seria 10.000 veces más rápido que la de tu ListBox, o cómo dice casimiro notevi: Y si en lugar de 10000, tuviera por ejemplo 1000000000000000000000, ¿cómo lo harías?


Un saludo.

Última edición por olbeup fecha: 19-11-2011 a las 21:20:47.
Responder Con Cita
  #8  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Si tienen razon, tengo que rediseñar eso, voy a buscar la manera de optimizar y no cargar muchos datos.

Mi idea era esta.

Que el vendedor tuviera a la mano el catalogo de sus articulos, por que pasa que saben qué articulo quieren, pero no saben el codigo de barras, ni el nombre exacto como se dio de alta el articulo ni el precio, entonces si empieza a escribir el codigo de barras en el evento onChange pues se ORDENAn los articulos por codigo, si es por nombre se ordenan por Nombre de articulo ascendente y el precio igual, y como relacioné los 3 listbox, al seleccionar un item en cualquiera de los 3 listbox en los demas tambien se selecciona su correspondiente informacion, ojalá que me haya explicado.



Se me acaba de ocurrir no cargar los datos si no una parte y conforme al evento onchange hacer la consulta y listar los registros necesarios ...

Voy a probar a ver que tal me va ... Gracias ..

Cualquier opinion se agradece ...
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta sql lenta la primera vez lledesma Conexión con bases de datos 2 07-07-2008 11:58:36
Ayuda con consulta lenta, lenta, lenta Gregory Mazon Firebird e Interbase 22 27-06-2007 09:56:38
Consulta muy lenta Walterdf Conexión con bases de datos 2 25-08-2004 18:37:57
Insercion masiva de registros MUY LENTA Balda Firebird e Interbase 10 24-03-2004 21:40:21
lenta la consulta. digital Conexión con bases de datos 2 10-09-2003 15:38:13


La franja horaria es GMT +2. Ahora son las 18:43:57.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi