PDA

Ver la Versión Completa : Consulta Like '%'+ :parametro + '%'


klionsis
22-08-2008, 16:57:00
Hola amigos, estoy intentando algo parecido a lo que plantea CarlaOnti (http://www.clubdelphi.com/foros/member.php?u=7690) aqui (http://www.clubdelphi.com/foros/showthread.php?t=29669)
pero no con mysql sino con una tabla dbf. Intente hacer lo que le aconsejan los muchas en ese link pero no me funciona. Tengo que hacerlo pasando parámetros, no puedo hacerlo de otra maneras. He visto en el foro que una de las ideas es asignado la consulta desde la propiead text o sql de tquery, pero eso a mi no me sirve, si no que debo pasar los parametros al tquery y desde el mismo colocar algo como:
...
Where
cadena like % :pCadena %

Alguien me da una mano?

Gracias.

BlueSteel
22-08-2008, 17:30:25
Hola

solo tienes que vincular las sentencias a tu consulta (Query)

por ejemplo, aqui estoy realizando un filtro en tablas .dbf que estan asignada a un Query por medio de un parametro..

Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select * From BxS Where Ficha=:VarFiltro');
Query1.Params[0].AsString:=SFicha.Text;
Query1.ExecSql;


el siguiente ejemplo estaria para realizar un filtro con la sentencia Like
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select * From Cliente');
Query1.Sql.Add('Where Cli_Rut Like'+QuotedStr('%'+vBus.Text+'%'))
Query1.Params[0].AsString:=SFicha.Text;
Query1.ExecSql;


Espero que esto te sirva

Salu2:p:D

klionsis
22-08-2008, 18:41:48
Gracias BlueSteel por tu respuesta, pero eso no es justamento lo que quiero cambiar. Yo no quiero vincular la sentencia a la consulta, si no lo que quiero es pasar el parámetro:

Query1.Close;
Query1.Sql.Clear;
Query1.ParamsbyName['pCodigo'].AsString:='123';
Query1.Open;


y en la propiedad "Sql" del componente tQuery ingresar la consulta:

Select *
from Linea
Where
Codigo like % :pCodigo %


pero esto no me funciona. Espero ser entendible.

Gracias.

egostar
22-08-2008, 18:48:00
Hola

Tal vez así:


Query1.Close;
Query1.Sql.Clear;// Hay que tener cuidado con esto que haces, si limpias el query, no veo que lo estes escribiendo de nuevo, yo lo omitiria
Query1.ParamsbyName['pCodigo'].AsString:='%'+'123'+'%';
Query1.Open;


Select * from Linea
Where Codigo like :Codigo


Salud OS

PD, usa las etiquetas para que el código se vea mejor.

klionsis
22-08-2008, 19:23:47
Sabés egostar que probé esa alternativa y tampoco me funciono :(.
No me daba pelota en cuanto el filtro que tenia que realizar...

egostar
22-08-2008, 19:28:31
Sabés egostar que probé esa alternativa y tampoco me funciono :(.
No me daba pelota en cuanto el filtro que tenia que realizar...

Te da un error o que es lo que te dice.

Salud OS

klionsis
23-08-2008, 01:29:37
Gente, me funciono con la ultima alternativa que me dieron, evidentemente estaba haciendo algo mal... muchas gracias. :)