PDA

Ver la Versión Completa : Busqueda Incremental


camiz
29-03-2012, 02:44:10
Hola a todos, tengo un problemita y quiero que me ayuden a resolver, los explico.
estoy haciendo una aplicacion y quiero que tenga TEdit que sirva para buscar y filtrar solamente el registro deseado. el codigo es este:

procedure TfrmPrincipal.Edit1Change(Sender: TObject);
begin
ClienDataSet1.Encomiendas_vista2.Filter := 'Nombre Like ' + QuotedStr(Edit1.Text + '%');
ClienDataSet1.Encomiendas_vista2.Filtered := True;
end;

el codigo hace su trabajo a la perfeccion. solo con un problema para mi que tengo que ingresar los caracteres del nombre tal y como estan escritos en el registro, si entrevero mayusculas y minusculas no encuentra el registro.
y si le agrego ala primera linea este codigo

ClienDataSet.FilterOptions := [foCaseInsensitive];

ya no funciona, alguien me podria decir en que estoy fallando. gracias de antemano

mightydragonlor
29-03-2012, 02:59:26
procedure TfrmPrincipal.Edit1Change(Sender: TObject);
begin
ClienDataSet1.Encomiendas_vista2.Filter := 'Nombre Like ' + QuotedStr('%' + Edit1.Text + '%');
ClienDataSet1.Encomiendas_vista2.Filtered := True;
end;
Prueba con esto.

ecfisa
29-03-2012, 04:49:41
Hola camiz.

Por favor cuando incluyas código en tus mensajes utiliza los TAG's. Esta es una imágen que explica su uso:

http://img403.imageshack.us/img403/3461/75416396.jpg

En cuanto al código, me parece que deberías pasar ambos valores a mayúsculas al filtrar:

procedure TFormPrincipal.Edit1Change(Sender: TObject);
begin
ClienDataSet1.Encomiendas_vista2.Filtered := False;
ClienDataSet1.Encomiendas_vista2.Filter := 'UPPER(Nombre) Like ' + QuotedStr(UpperCase(Edit1.Text)+'%');
ClienDataSet1.Encomiendas_vista2.Filtered:= True;
end;


Saludos.

camiz
29-03-2012, 18:01:25
ecfisa
eres un genio, el codigo funciona como yo queria, asunto resuelto

gracias por la respuesta.