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 06-07-2004
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
Problemas con filtro dinámico

Buenas
Tengo una Query, un TEdit y un dbgrid atado a esa Query. Quisiera que a medida que yo escriba en el TEdit me vaya buscando en el DBGrid el registro que coincida con ese texto y lo hice de esta manera:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
with query1 do
begin
Close;
SQL.Clear;
SQL.ADD('select numero from "c:\base.db" where CAMPO like' + quotedstr(edit1.text));
Open;
end;
end;

Pero , por ejemplo, si yo quiero buscar el codigo 1203 me sucede lo siguiente:

cuando escribo el 1, el dbgrid queda en blanco,
cuando presiono el 2 me muestra todos los que empiezan con 1,
cuando presiono el 0 me muestra todos los que empiezan con 12,
cuando presiono el 3 me muestra todos los que empiezan con 120, y ahí se queda salvo que le de un enter o ponga otro caracter.

No se me ocurre como solucionar esto, si alguien puede darme una mano se lo agradeceré.
Saludos.

Walter.
Responder Con Cita
  #2  
Antiguo 06-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Lo que pasa es que no colocastes los operadores % seria algo asi

Like %ValorBuscar%

Donde el % lo debes colocar dond quieras que la consulta devuelva el resto de los valores

o sea:

Para todos los registros que comienzen con uno seria : like 1%
Para todos los registros que terminen con uno seria : like %1
Para todos los registros que contengan un uno no importa la posicion seria : like %1%
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #3  
Antiguo 06-07-2004
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
Ya lo había probado, puse:

con esto sigo como al principio:
quotedstr(edit1.text + '%')

con esto me busca cualquier cosa:
quotedstr('%' + edit1.text + '%')

y con esto tambien me da cualquier cosa:
quotedstr('%' + edit1.text)

Creo que el problema viene por el lado del OnKeyPress, si me pueden ayudar...

Gracias, de todas maneras.
Saludos.
Walter
Responder Con Cita
  #4  
Antiguo 06-07-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
y si lo colocas en el evento onchange??
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 06-07-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
El problema es que cuando entras al evento OnKeyPress, la tecla que lo generó aun no se anexa al texto del Edit.

Esto es, si en un momento dado Edit.Text = '12' y presionas '0', al entrar al evento Edit1.Text aún es igual a '12'. No es sino hasta que sales del evento que pasa a ser Edit.Text = '120'.

Podrías intentar solucionarlo cambiando el LIKE por:

LIKE QuotedStr(Edit1.Text + Key + '%')

Pero aún así tendrás que tratar el caso en el que la tecla se un Back Space por ejemplo.

Otra opción es simplemente cambiar de evento y usar OnChange en lugar de OnKeyPress.

Por otra parte toma en cuenta que este método que usas puede ser algo muy lento ya que con cada tecla haces una consulta a la base de datos.

// Saludos
Responder Con Cita
  #6  
Antiguo 08-07-2004
Walterdf Walterdf is offline
Miembro
 
Registrado: may 2003
Ubicación: Buenos Aires
Posts: 152
Poder: 22
Walterdf Va por buen camino
Muchas gracias ahora anduvo de 10.

Un abrazo.

Walter
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 17:52:04.


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