PDA

Ver la Versión Completa : problema con filter


superhopi
05-06-2003, 12:40:44
tengo un problemilla , a ver si me podeis ayudar:

tengo que hacer el siguiente filtro:

campo1 like %palabra% and (campo2 <> '' or campo3 <> '' )

pero me da el siguiente error:

-Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros.

Hay otra forma de hacer el filtro para que no me de el error?
He probado con parentesis, sin ellos,,, pero no me funciona, y no me gustaria hacerlo con una consulta.

Muchas gracias de antemano.

andres1569
05-06-2003, 12:49:01
Hola:

Prueba esto:

Filter := 'campo1 like ' + QuotedStr(%palabra%) + ' and (campo2 <> NULL or campo3 <> NULL)';

Un saludo

superhopi
05-06-2003, 13:02:05
sique saliendome el mismo error... parece ser que es por los parentesis porque esto funciona:
campo1 like %palabra% and campo2 <> '' or campo3 <> ''
pero vamos, que esto no es lo que yo quiero ^_^

marcoszorrilla
05-06-2003, 13:19:54
Los Filtros no admiten Like mira este hilo:

http://www.clubdelphi.com/foros/showthread.php?s=&threadid=850&highlight=%2Afiltro%2A

Un Saludo.

superhopi
05-06-2003, 13:23:34
yo tengo filtros con like y si que me funcionan...
que raro.

andres1569
05-06-2003, 13:39:49
Hola:

Depende de qué componentes, los del BDE no admiten like, sino "=palabra*", pero los ADO sí que admiten este operador.

Prueba de poner la primera expresión también entre paréntesis:

Filter := '(campo1 like ' + QuotedStr(%palabra%) + ') and (campo2 <> NULL or campo3 <> NULL)';

Un saludo

superhopi
05-06-2003, 13:46:29
tampoco me va...

marcoszorrilla
05-06-2003, 13:48:34
Según pruebas que acabo de realizar en Paradox solo funciona para los campos en que les pasemos como comienzan, no va ni con terminan, ni contienen.



procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.Filter:='Company ='+QuotedStr(Edit1.text+'*') ;
ShowMessage(table1.Filter);
Table1.Filtered:=True;
end;

Un Saludo.

andres1569
05-06-2003, 13:50:57
¿Y Así?

Filter := '(campo1 like ' + QuotedStr(%palabra%) + ') and ((campo2 <> NULL) or (campo3 <> NULL'));

superhopi
05-06-2003, 13:52:45
joder, ni a la de tres ( y perdon por el taco)
tampoco me va asi,,, es por el parentesis, estoy seguro, pero para unir las dos ultimas expresiones con el or... no tengo otra opcion
snif snif ...