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
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 14:07:43.


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