Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   filtrar frases de una tabla usando TEdit (https://www.clubdelphi.com/foros/showthread.php?t=94275)

shinopeat87 30-10-2019 00:39:11

filtrar frases de una tabla usando TEdit
 
hola amigos nuevamente les comento que tengo una duda que no he podido resolver. tengo un dbgrid1 asociado a una tablaproductos de mysql, un TEditfiltro, un datasource que me enlaza al dbgrid1 con la tablaproductos y un campo en la tablaproductos llamado descripcion_producto, lo que quiero hacer es un filtro usando un FDqueryfiltro para que a medida que escriba en el Teditfiltro me valla descartando las no coincidencias, bien con el siguiente codigo hace parte del trabajo sin errores usando parametros para el filtro.

Código Delphi [-]
 if Tedtfiltro.Text <>'' then
    begin
        with ModuloDatos.FDQuery1filtro do
          begin
           SQL.Clear;
           SQL.Add ('SELECT id_producto,codigo_producto,descripcion_producto,precio_costo_producto,precio_venta_producto,stock_p  roducto');
           SQL.Add ('FROM productos WHERE productos.descripcion_producto LIKE :BUSQUEDA ORDER BY productos.id_producto ');
           params.ParamByName('BUSQUEDA').AsString :=  '%' +Tedtfiltro.Text+ '%' ;
           Open();
          end;
    end;

el problemas es el siguiente : en la tabla tengo varios articulos que son "ANTIPARRAS"

ejemplo:

ANTIPARRAS NEGRAS
ANTIPARRAS BLANCAS
ANTIPARRAS GRISES
ANTIPARRAS PARA MOTOCICLETAS

bien cuando filtro me toma sin problemas la palabra ANTIPARRAS, pero cuando presiono el espacio algunos registros se descartan como coincidencia y eso no deberia pasar ya que todos los registros después de la palabra ANTIPARRAS tienen un espacio.
¿como soluciono ese problema?

muchas gracias de ante mano

Casimiro Notevi 30-10-2019 09:11:18

Es más cómodo usar containing:
Código Delphi [-]
...
SELECT id_producto,codigo_producto,descripcion_producto,precio_costo_producto,precio_venta_producto,stock_p  roducto
FROM productos
WHERE productos.descripcion_producto containing :BUSQUEDA
ORDER BY productos.id_producto;

params.ParamByName('BUSQUEDA').AsString := Tedtfiltro.Text;

TOPX 30-10-2019 19:41:41

Código Delphi [-]
ParamByName('BUSQUEDA').AsString := '%' + Trim(Tedtfiltro.Text) + '%';
-

shinopeat87 30-10-2019 23:15:53

gracias por responder amigos.

Casimiro Notevi como estas? te cuento que me da un error de sintaxis usando el containing

Código Delphi [-]
if Tedtfiltro.Text <>'' then
    begin
        with ModuloDatos.FDQuery1filtro do
          begin
           SQL.Clear;
           SQL.Add ('SELECT id_producto,codigo_producto,descripcion_producto,precio_costo_producto,precio_venta_producto,stock_p  roducto');
           SQL.Add ('FROM productos WHERE productos.descripcion_producto containing :BUSQUEDA ORDER BY productos.id_producto ');
           params.ParamByName('BUSQUEDA').AsString := Tedtfiltro.Text;
           Open();
          end;
    end;

en si los articulos que tengo son :

ANTIPARRAS VIRT
ANTIPARRAS VIRT2
ANTIPARRAS ROJAS
ANTIPARRAS ROJAS2

cuando escribo antiparras todo en orden pero cuando doy espacio se me borran ANTIPPARAS VIRT Y VIRT2
y si presiono la V .. ya no me aparece ningun registro
no se que estare haciendo mal...

shinopeat87 30-10-2019 23:19:13

TOPX gracias por tu respuesta... me hace lo mismo que sin el Trim :(

Casimiro Notevi 31-10-2019 09:16:38

Cita:

Empezado por shinopeat87 (Mensaje 534171)
error de sintaxis usando el containing

Creo que no has dicho qué base datos usas: firebird, mysql, ms sqlserver, sqlite, postgresql, etc..


Pon entrecomillado el parámetro de búsqueda:
Código Delphi [-]
Params.ParamByName('BUSQUEDA').AsString := #34+Tedtfiltro.Text+#34;

shinopeat87 31-10-2019 12:48:52

hola amigos nuevamente les comento que tengo una duda que no he podido resolver. tengo un dbgrid1 asociado a una tablaproductos de mysql.

En esa parte del mensaje dije la base amigo :) gracias por tu respuesta, y el parámetro siempre estuvo con comillas

Casimiro Notevi 31-10-2019 13:34:00

Cita:

Empezado por shinopeat87 (Mensaje 534176)
hola amigos nuevamente les comento que tengo una duda que no he podido resolver. tengo un dbgrid1 asociado a una tablaproductos de mysql.

Preguntas distintas en hilos distintos.
Cita:

Empezado por shinopeat87 (Mensaje 534176)
...y el parámetro siempre estuvo con comillas

Pues no lo veo, amigo.


La franja horaria es GMT +2. Ahora son las 13:01:12.

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