Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Consulta para Filtrar Dos Campos (https://www.clubdelphi.com/foros/showthread.php?t=44251)

don malo 01-06-2007 11:08:15

Consulta para Filtrar Dos Campos
 
Hola, gracias de antemano a los que me ayuden..

La cuestion es esta:

Tengo una consulta donde quiero filtrar dos campos, la informacion de estos dos campos la selecciona el usuario o la captura y en ese momento es cuando deseo hacer un filtro para que la informacion aparezca en un dbgrid, supongo que debe ser algo sencillo pero no encuentro la manera ya intente con estas dos por separado:

Query.Filter:=('Campo1 = ' + QuotedStr (Valor1);
Query.Filter:=('Campo2 = ' + QuotedStr (Valor2);

Query.SQL.Text:=('Select * From Tabla Where Campo1 Like "+Valor1+" And Campo2 Like "+Valor2+");

la idea es mas o menos asi (no estoy en delphi en este momento y no recuerdo bien), segun yo, y Delphi lo corre (utilizo Delphi 6) pero
el problema es al momento de darle Query1.Open en el caso de Query.Sql.Text.etc...

En el caso de utilizar Filter no manda ningun error pero no me filtra mas que por uno de los dos campos....

la verdad si estoy un poco desesperado, probablemente mi problema es de sintaxis y pues lo que necesito saber basicamente es como filtrar mas de un campo a la vez..

muchisimas gracias por su atencion y espero sus sugerencias .Por cierto la base de datos es ACCESS jeje:)

Lepe 01-06-2007 15:11:38

Aquí una forma:
Código Delphi [-]
query1.Close;
Query.SQL.Text:='Select * From Tabla Where Campo1 Like '+ QuotedStr(Valor1+'*') + ' And Campo2 Like ' + QuotedStr(Valor2+'*');
Query1.Open;

Si no recuerdo mal, Access usa el asterisco de comodin, si da fallos, usa el carácter '%' de comodin.

Saludos

fjcg02 02-06-2007 00:06:42

Cita:

Query.Filter:=('Campo1 = ' + QuotedStr (Valor1);
Query.Filter:=('Campo2 = ' + QuotedStr (Valor2);
...
En el caso de utilizar Filter no manda ningun error pero no me filtra mas que por uno de los dos campos....
Para que te filtre por los dos campos deberás ponerlos juntos
Query.Filter:='Campo1 = ' + QuotedStr (Valor1)+ ' AND '+'Campo2 = ' + QuotedStr (Valor2);

Logicamente, te convendría poner unas condiciones para evitar valores nulos de Valor1 y Valor2 para filtrar por ninguno, el que tenga valor o los dos.

Despues debes aplicar el filtro.
Query.Filtered:= True; ( creo que es así la sintaxis )

Suerte y saludos

don malo 05-06-2007 09:21:40

Muchisimas gracias las dos ideas funcionaron y si al parecer era la sintaxis el problema ;)


La franja horaria es GMT +2. Ahora son las 11:03:38.

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