Filtros en delphi utilizando like

Estoy realizando un programilla de llamas, tengo algunas dudas, quiero que por medio de una búsqueda sencilla sin querys al ir introduciendo cada letra de un nombre vaya apareciendo en un dbgrid los nombres que contengan esa letras. Por ejemplo si quiero buscar todos los nombres que sean ulises, aparezcan, o si quiero buscar todos los Perez, aparezcan todos, el nombre esta compuesto por nombre-apellido paterno-apellido materno, he estado intentando esto pero no me funciona.
procedure TFLlamadas.Edit1KeyPress(Sender: TObject; var Key: char);
begin
Tllamadas.Filter:= 'NOMBRE like' + QuotedStr(strupper(Pchar(Edit1.Text))+'*');
Tllamadas.feltered:= True;
End;

2 Respuestas

Respuesta
1
No, el like no funciona en los filtros de un componente en este caso de TTable.
El asunto esta así:
TLlamadas.Filtered := false;
TLlamadas.Filter :='NOMBRE = '+QuotedStr(Edit1.TExt);
TLlamadas.Filtered := true;
Así seria el código.
Pero antes a tu table TLlamadas tiene una propiedad FilterOptions buscala en el inspector de objectos, esta opción tiene dos opciones más llamadas foCaseInsensitive y foNoPartialCompare ha estas 2 deberás ponerlas en TRUE.
Has este movimiento y checalo. Ok
Gracias por contestar mi pregunta, pero mira lo que quiero es que si tengo ULISES MONTALVO DIAZ, pueda buscarlo por ulises o por montalvo o por diaz, todo el nombre esta en un solo campo, por eso es que quería utilizar el like, es que si utilizo este código que me diste si solo pongo montalvo no me aparece nada.
Ahora con respecto a tu nota de Pero antes a tu table TLlamadas tiene una propiedad FilterOptions buscala en el inspector de objectos, esta opción tiene dos opciones más llamadas foCaseInsensitive y foNoPartialCompare ha estas 2 deberás ponerlas en TRUE.
Has este movimiento y checalo. Lo hice y ya no me mostró nada en el dbgrid al correr el código que me diste.
Ojala me aya explicado y puedas ayudarme.
Respuesta
1
Prueba con este código:
procedure TFLlamadas.Edit1KeyPress(Sender: TObject; var Key: char);
begin
Tllamadas.Filter:= 'NOMBRE like ' + QuotedStr('%' + Edit1.text + '%');
Tllamadas.filtered:= True;
End;
El carácter '*' no es válido aquí, tiene que ser '%', es el carácter comodín...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas