Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Filtrar un DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=18713)

jdangosto 21-02-2005 11:28:38

Filtrar un DBGrid
 
Buenas.

Estoy intentando filtar un DBGrid pasandole uno parámetros desde un edit. La idea es que cuando escribas un apellido y presiones el botón muestre en el dbgrid todos los registros que contengan ese apellido, pero no consigo hacerlo.
El código que implemento es el siguiente:
[delphi]
procedure TForm1.Button1Click(Sender: TObject);
begin
dbgrid1.DataSource.DataSet.Filter := edit1.text;
end;
[/dephi]

El error que me da es que no encuentra la columna que le paso como parámetro y no sé como especificar la columna en la que debe hacer la búsqueda.

Lepe 21-02-2005 12:47:42

[delphi]
procedure TForm1.Button1Click(Sender: TObject);
begin
dbgrid1.DataSource.DataSet.Filter := 'Nombre campo = ' + edit1.text;
end;
[/dephi]



Saludos

jdangosto 22-02-2005 10:19:04

Hola Lepe, gracias de nuevo.

He intentado la solución que me comentas y me sigue mostrando el mismo error, diciendo que no encuentra la columna. Al parecer está interpretando el nombre que se le pasa al edit como nombre de la columna.
Por otro lado intenté este código
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
dbgrid1.DataSource.DataSet.Filter := 'Identificacion =' + edit1.Text+'%';
end;
para que cogiera cualquier texto añadido al buscado pero sigue sin funcionar, el caso es que compila sin error.

Por otro lado, existe alguna forma de intentar hacerlo de tal forma que conforme se vaya escribiendo en el edit vaya mostrando el dbgrid los registros conforme se vayan adecuando a lo buscado.

Lepe 22-02-2005 11:14:31

Una forma es a través de una consulta, en el OnKeyUp, por ejemplo, si la consulta está abierta, la cierras y acto seguido la abres con este where:

Código Delphi [-]
'WHERE upper(Identificacion) like '+ quotedstr(uppercase(edit1.text)+'%');

Si quieres más comodidad, ponle un parametro a la consulta, además si el sql es estático, se prepara más rapido para ser lanzada la consulta.

SAludos

jdangosto 22-02-2005 21:15:08

Al final lo he solucionado con una consulta, pero no en el OnKyeUp, sino con un query a la tabla. Esté es el código:

Código Delphi [-]
procedure TForm_facturas.SpeedButton5Click(Sender: TObject);
begin
//paso los parametros a la consulta
query1.Close;
query1.ParamByName('apelli').AsString := edit1.Text+'%';
query1.Open;
if query1.IsEmpty then
        showmessage('Ninguna Factura que mostrar para ese cliente');
end;

Gracias de nuevo


La franja horaria es GMT +2. Ahora son las 02:33:44.

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