Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   ¿Como hacer una Consulta en el Onchange de un TEdit? (https://www.clubdelphi.com/foros/showthread.php?t=39585)

day_eli 24-01-2007 18:10:00

¿Como hacer una Consulta en el Onchange de un TEdit?
 
Hola amigos... :pQuisiera saber como puedo hacer una consulta de clientes en el onchange de un tedit (estilo encarta), que me permita buscar por su apellido de tal manera que los elementos que se encuentren me los muestre en el dbgrid que esta conectado a la base de datos a medida que el usuario va tecleando el nombre del cliente.

Onti 24-01-2007 18:30:19

Podriaa utilizar un código como este en el evento onchange o tambien onkeyPress

Código Delphi [-]
Var
  LCad :String;
begin
  LCad :=QuotedStr('%'+E_Apellido.Text+'%');
  QConsulta.Close;
  QConsulta.SQL.Clear;
  QConsulta.SQL.Add('SELECT APELLIDO FROM MITABLA WHERE APELLIDO LIKE '+LCad);
  QConsulta.Open;
end;

droguerman 24-01-2007 19:08:12

mi método funciona bien:
Código Delphi [-]
with dataset do
begin
  filtered := false;
  filter := 'nombre LIKE '+quotedStr(edit1.text)+'%';
  filtered := true;
end;

saludos

Neftali [Germán.Estévez] 25-01-2007 10:52:00

Piensa que si la tabla donde estás haciendo la búsqueda es unpoco grande, puede ser muy costoso ir haciendo consultas a cada momento que el usuario pulsa una tecla.
Yo pensaría en la posibilidad de guardar la tabla donde haces la búsqueda en memoria, ya sea vía TClientDataset o algun otro componente específico para ello (MemoryTable -rx- o similar).

Lepe 25-01-2007 12:03:24

Al mensaje de droguerman, yo añadiría la opción más simple, en el OnKeyDown (por ejemplo) detectar que se pulsa intro y así lanzar la consulta una sola vez:

Código Delphi [-]
if Key = VK_RETURN then
with dataset do
begin
  filtered := false;
  filter := 'nombre LIKE '+quotedStr(edit1.text)+'%';
  filtered := true;
end;

Es una opción que suele gustar al usuario cuando hay muchos registros; cuando hay pocos, no resulta pesado el método.

Saludos

day_eli 26-01-2007 22:08:43

Buen día...para las sugerencias de Lepe y Drogerman, el codigo me genera un error que dice: 'Dynamic SQL Error'. Error code=-104:eek:

Caral 26-01-2007 22:32:10

Hola day_eli
Un filtro es relativamente facil de conseguir :rolleyes:
En el ejemplo que esta aqui:
ftp://196.40.62.225/
Puedes ver como se hace, instalalo y lo pruebas, esta el codigo completo, es un ejemplo que hice casualmente para estas dudas, Filtra varias cosas, edits, comobox en un dbgrid.
Saludos

Lepe 27-01-2007 13:19:30

day_eli ¿qué base de datos estas usando? ¿qué componenentes? ¿que instrucción SQL estas enviando?(haz un ShowMessage antes de abrir la consulta).

Saludos

Crashthebig 28-01-2007 03:06:53

Eso es algo facil de hacer
 
Este es el codiggo que debes usar pon esto en el evento onchange de to edit
Nombres en este caso es el campo de busqueda


Table1.locate('Nombres',edit1.text,[lopartialkey,locaseinsensitive];


La franja horaria es GMT +2. Ahora son las 04:34:25.

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