Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-04-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Tabla relativamente pequeña, muy lenta al indexarla...

Hola a todos, espero q me puedan dar una mano con este problemita...
Tengo una tabla Paradox de Clientes, estos están ordenados por número... mi intención es que uno los pueda ubicar por nombre cuando se va escribiendo el mismo en un edit, lo q me obliga a indexarlo por nombre. Todo me funciona bien pero el problema es que es muy lento... el dbgrid tarda aproximadamente 5 segundos en cargarse, y cuando voy escribiendo el nombre, luego de apretar cada tecla tarda, también, alrededor de 5 segundos (uno puede terminar de teclear el apellido entero y por ahí ni apareció la segunda letra).

¿Hay alguna alternativa para hacer esto más rápido? La tabla tiene 1757 registros, me parece chica ya que leyendo el foro veo que los problemas de lentitud comienzan a aparecer cuando se tienen registros en el orden de decenas de miles...

Acá les paso el código, desde ya les agradezco su tiempo...

Código Delphi [-]
//Al activar el form
procedure TeMark_ConsuCli_form.FormActivate(Sender: TObject);
begin
Datamodule1.Client.indexname:='indexnom';
end;

Código Delphi [-]
//Al presionar una tecla en el Edit
procedure TeMark_ConsuCli_form.Edit1Change(Sender: TObject);
begin
Datamodule1.Client.setkey;
Datamodule1.Client['CLI_NOM']:=Edit1.Text;
Datamodule1.Client.GotoNearest;
end;

Código Delphi [-]
//Al cerrar el form
procedure TeMark_ConsuCli_form.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
Datamodule1.Client.indexname:='indexnum';
end;

El dbgrid lo tengo relacionado directamente con la tabla Paradox, traté de hacerlo con un Query pero no me da la función GotoNearest...

De nuevo, gracias.
Juan
Responder Con Cita
  #2  
Antiguo 05-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si se trata de tablas Paradox, mejor utiliza FindNearest.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 05-04-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Hola Marcos, gracias por responder tan rápido...
Te comento que cambié GotoNearest por FindNearest, por lo que el código quedó así:

Código Delphi [-]
//Al presionar una tecla en el Edit
procedure TeMark_ConsuCli_form.Edit1Change(Sender: TObject);
begin
Datamodule1.Client.setkey;
Datamodule1.Client.FindNearest([Edit1.Text]);
end;

Sin embargo sigue tardando lo mismo... yo creo que tiene algo que ver con los índices; si no le cambio el índice se carga / busca rápido... ¿alguien tendrá alguna otra idea?
Responder Con Cita
  #4  
Antiguo 05-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure TeMark_ConsuCli_form.Edit1Change(Sender: TObject);
 begin
 Datamodule1.Client.FindNearest([Edit1.Text]);
 end;

SetKey se utiliza solamente con Dbase.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 05-04-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Cita:
Empezado por marcoszorrilla
Código Delphi [-]
procedure TeMark_ConsuCli_form.Edit1Change(Sender: TObject);
  begin
  Datamodule1.Client.FindNearest([Edit1.Text]);
  end;

SetKey se utiliza solamente con Dbase.

Un Saludo.
Gracias Marcos, saqué el setkey y funciona.... pero sigue siendo lento...
Responder Con Cita
  #6  
Antiguo 05-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Y cuántos registros tiene esa tabla?.


Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #7  
Antiguo 05-04-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
La tabla tiene 1757 registros, si no cambio el índice funciona rápido... el tema es cuando paso el nombre al indexname (indexnom en este caso) y cuando realiza la búsqueda con cada FindNearest...
Responder Con Cita
  #8  
Antiguo 05-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues no tiene explicación que con tampocos registros vaya lento, porque no generas los índices de nuevo y nos dices como resulta, yo busco con más de 100.000 registros y va rápido.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #9  
Antiguo 05-04-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos.

Otro asunto es que tipo de maquinas utilizas?
Cuanto Procesador, memoria,....?
Estas en Red?
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #10  
Antiguo 05-04-2005
Ing_Fajardo Ing_Fajardo is offline
Miembro
 
Registrado: abr 2005
Ubicación: Mexico
Posts: 46
Poder: 0
Ing_Fajardo Va por buen camino
Mi metodo

Mi metodo es el siguiente

Uso un control combobox que tenga autocompletar ( como los de kdsdev.com, con skin)

La lista de nombres las paso al combobox por programacion y listo, valido el nombre cuando pierde el foto el combobox.

Es mas programacion, pero es mas rapido que cualquier otro metodo.
Responder Con Cita
  #11  
Antiguo 05-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por vtdeleon
Saludos.

Otro asunto es que tipo de maquinas utilizas?
Cuanto Procesador, memoria,....?
Estas en Red?
La búsqueda sobre un índice de mil y tantos nodos debiera volar incluso en una 286 con unos cuantos Kb de memoria...

Hasta luego
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #12  
Antiguo 07-04-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Hola! Gracias a todos por sus respuestas... en un principio pensé que se trataba de los índices por lo q los volví a definir, probé otra vez y seguía lento. Luego hice una prueba haciendo un programa nuevo; con un form con dbgrid q me mostrase la tabla y un RadioButton para cambiar el índice... funciona bien (rápido)!!

Evidentemente hay algo en el programa que lo lentifica, que podría llegar a ser? Estoy buscando pero no encuentro nada.... alguna idea?

Les agradezco a todos por su tiempo.

Juan
Responder Con Cita
  #13  
Antiguo 07-04-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos.

Cuales y cuantos componentes(DB) usas en ese formulario?
Es un formulario MDI y/o usas Datamodule?
muestranos los codigos que utilizas para la funcionabilidad de ese form!

Hasta luego.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!

Última edición por vtdeleon fecha: 07-04-2005 a las 22:36:28.
Responder Con Cita
  #14  
Antiguo 08-04-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Hola vtdeleon! Uso un DbGrid para mostrarla, pero no creo q sea esa la causa ya que en todo el programa anda así; porque no sólo ahí la muestro. Tengo la "ficha de clientes" donde muestro todos los campos para hacerles Alta / Baja / Modificaciones, etc., y con el bóton que uso para cambiar de ficha (NombreDeTabla.Next o NombreDeTabla.Prior) también noto que tarda bastante.
Uso un Datamodule para manejarlo, en la prueba que hice también lo definí asi y anduvo bien...
Mañana en el trabajo te muestro el código de los form... (no tengo el proyecto aquí), aunque creo q el problema pasa por otro lado.
Gracias...
Responder Con Cita
  #15  
Antiguo 11-04-2005
Avatar de JuanBCT
JuanBCT JuanBCT is offline
Miembro
 
Registrado: ago 2004
Ubicación: Campana, Argentina
Posts: 57
Poder: 20
JuanBCT Va por buen camino
Solucionado!

Hola! Solucioné el problema, lo que pasaba era que cada query que había en mi programa estaba en Active:=true desde la creación del form... los puse en false (igual los desactivaba y volvía a activar al ejecutar los queries).....
Ahora funciona todo como debería, gracias a todos por ayudarme.
Saludos!
Juan
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


La franja horaria es GMT +2. Ahora son las 12:06:22.


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