Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Filtro Parcial TTable (https://www.clubdelphi.com/foros/showthread.php?t=84604)

sorati 10-11-2013 22:34:04

Filtro Parcial TTable
 
Hola buenas tardes estoy necesitando hacer una busqueda parcial en un componente ttable, la busqueda que necesito hacer es por el campo nombre y apellido de un determinado empleado, tengo un edit en el cual ingreso el dato a buscar pero necesito que me filtre por la cadena que ingrese ya sea un caracter por ejemplo si busco por la letra 'r' me busque todos los empleados que contienen esa letra en el nombre o apellido. Gracias!

ecfisa 11-11-2013 00:43:50

Hola sorati y bienvenido a Club Delphi :)

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

Con respecto a tu consulta, fijate si te sirve de este modo:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  with Table1 do
  begin
    Filtered := False;
    Filter   := 'NOMBREAPELLIDO = ' + QuotedStr(Edit1.Text + '*'); // (*)
    Filtered := True;
  end;
end;
(*) Use el nombre de campo "NOMBREAPELLIDO" como ejemplo, reemplazalo por el que corresponda en tu tabla.

Saludos :)

sorati 11-11-2013 06:14:24

Hola gracias por responder, intente hacerlo de esa manera pero solo me busca por la primera letra por ejemplo ingreso en el edit la letra 'N' y me filtra por ejemplo Nicolas Romero, al hacer lo mismo con la R para que me filtre por el apellido no lo hace.
Saludos

nlsgarcia 11-11-2013 08:09:21

sorati,

Cita:

Empezado por sorati
...solo me busca por la primera letra por ejemplo ingreso en el edit la letra 'N' y me filtra por ejemplo Nicolas Romero, al hacer lo mismo con la R para que me filtre por el apellido no lo hace...

Pregunto: ¿Haz considerado usar un query?.

Revisa este código:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
   with IBQuery1 do
   begin
      Close;
      Sql.Clear;
      Sql.Text := 'Select * from Employee Where First_Name Like :P1 and Last_Name Like :P2';
      ParamByName('P1').AsString := Edit1.Text + '%';
      ParamByName('P2').AsString := Edit2.Text + '%';
      Open;
   end;
end;
El código anterior permite consultar una tabla de empleados y hacer búsquedas por nombre y apellido por medio de un query.

Espero sea útil :)

Nelson.

ecfisa 11-11-2013 16:17:58

Cita:

Empezado por sorati (Mensaje 469490)
Hola gracias por responder, intente hacerlo de esa manera pero solo me busca por la primera letra por ejemplo ingreso en el edit la letra 'N' y me filtra por ejemplo Nicolas Romero, al hacer lo mismo con la R para que me filtre por el apellido no lo hace.
Saludos

Hola sorati.

Entiendo... Para hacer lo que deseas con un TTable vas a tener que usar el evento OnFilterRecord de la misma:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  Table1.Filtered := False;
  Table1.Filtered := True;
end;

procedure TForm1.Table1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept := Pos(Edit1.Text, Table1.FieldByName('NOMBREAPELLIDO').AsString) <> 0
end;


Por otro lado, si decidis cambiar por un TQuery que, al igual que Nelson considero una opción más flexible, sería:
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
  with Query1 do
  begin
    Close;
    SQL.Text := 'SELECT * FROM TU_TABLA WHERE NOMBREAPELLIDO LIKE :PVALUE';
    ParamByName('PVALUE').AsString := '%' + Edit1.Text + '%';
    Open;
  end;
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 17:28:12.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi