Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   porque no me reconoce los caracteres "*" ni "%" cuando filtro (https://www.clubdelphi.com/foros/showthread.php?t=28675)

mrmago 28-12-2005 18:26:44

porque no me reconoce los caracteres "*" ni "%" cuando filtro
 
estoy programando en Delphi, BD paradox y estoy tratando de filtrar en una tabla, utilizando el codigo
Table1.Filter := 'DESC_1 like *'+ edit3.text+'*';
Table1.filtered := true;

o

Table1.Filter := 'DESC_1 like %'+ edit3.text+'%';
Table1.filtered := true;

pero no me reconoce los caracteres, como le puedo hacer para solucionar esto :confused:

aledieb 28-12-2005 18:42:26

porque ...
 
El "like" es un comando de SQL, y los filtros de paradox, hasta donde se, solo pueden utilizar >, <, =, >= y <=

Te combiene utilizar un TQuery

Código:


Query1.close;
Query1.sql.clear;
Query1.sql.add('Select * from tutabla');
Query1.sql.add('where DESC_1 like %'+edit3.text+'%');
Query1.open;

Espero que te sirva

mrmago 28-12-2005 19:35:25

Gracias alejandro, ya lo intente pero no me funciono, me manda el mensaje
Invalid use or keymord
Token: like
Line Number:2

no se que hacer en este caso, alguna sugerencia?

lpmlpm 28-12-2005 19:46:40

lo que va despues del Like debe ir entrecomillado

Código Delphi [-]
Query1.sql.add('where DESC_1 like "%'+edit3.text+'%"');

igual prueba usando CONTAINING en vez del LIKE y omite los '%' en la sentencia.

mrmago 28-12-2005 20:08:16

pues tampoco, ahora me dice
line number: 1

y tambien lo probe con containing

lpmlpm 28-12-2005 20:12:30

porque no pones exactamente que código estas usando???... sorry no habia visto que usas Paradox (el containing solo funciona en Firebird/Interbase), pero el LIKE funciona muy bien con Paradox algun error debes tener en como estas formulando el query como para que no te este funcionando

mrmago 28-12-2005 20:26:34

ya me corrio no me marca errores, pero en el DBGrid me da toda la tabla, no me filtra

lpmlpm 28-12-2005 22:29:17

y esperas que nosotros adivinemos porque no es que te filtra??... si somos medio psiquicos algunas veces pero no confies demasiado en nuestros poderes extrasensoriales, sin que nos proveas de la query o el código que estas utilizando dificilmente te podremos ayudar aqui.

Esto me funciona perfecto desde el SQLExplorer sobre el alias DBDemos que es de Paradox:
Código SQL [-]
select *
from country
where Name Like "%na%"

Neftali [Germán.Estévez] 29-12-2005 10:01:47

Prueba a utilizar comillas simples en lugar de dobles:

Código Delphi [-]
 Str := 'where DESC_1 like ' + QuotedStr('%' + Edit3.Text + '%');
 Query1.sql.add(Str);

De forma que la sentancia final quede:

...Where DESC_1 like '%texto%'

Suponiendo que texto sea lo que hay en Edit3.Text.

sanz 27-01-2006 02:17:54

Ayuda
 
Hola lei tu codigo, y lo puse en practica pero el problema es que cuando escribo la primera letra no me cambia nada solo cuando escribo la segunda letra estoy utilizando un filtro en el evento onkeypress pero tengo ese problema espero me puedas ayudar ya espero su respuesta lo mas antes posible se los agradeceria

cuburu 27-01-2006 04:21:16

Por que no pruebas usar algo como esto, deja que delphi se encargue de todas las conversiones y demás:

Código Delphi [-]
var
  Tabla: TQuery;
begin
  Tabla := TQuery.Create();
  try
    Tabla.Close;
    Tabla.Clear;
    {Checate que le estamos enviando un parametro a la consulta por medio de los dos puntos ( : ) llamado VALOR}
    Tabla.Add('SELECT * FROM tutabla WHERE campon LIKE :VALOR');
    
   {Ahora le enviamos el valor a ese parametro, si es cadena usa asString, si es entero asInteger, etc}
    Tabla.ParamByName('VALOR').asString := '%' + Edit1.Text + '%';
    Tabla.Open;
  finally
    Tabla.Free;
  end;
end;

Creo que es mejor el armado de consultas de esta manera debido a que evitas tanto concatenado de información.

Espero haberte ayudado en algo... suerte.


La franja horaria es GMT +2. Ahora son las 20:59:22.

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