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)
-   -   como filtrar en un dbgrid por una palabra a buscar (https://www.clubdelphi.com/foros/showthread.php?t=28604)

mrmago 24-12-2005 19:17:01

como filtrar en un dbgrid por una palabra a buscar
 
Hola, estoy programando y necesito filtrar el contenido de un dbgrid por una palabra que se busque, ya lo logre que filtrara por la palabra de todo el campo, pero necesito filtrar cuando busco una palabra, ejemplo:
busco la palabra foco dentro del texto
"es un foco de alta intencidad"
"el color ambar lo logras con un foco"
"el total de focos son 4"

que me filtre todo lo que contenga foco en el campo
como le puedo hacer?

marcoszorrilla 24-12-2005 19:25:08

Pues lo más sencillo es con una consulta SQL
Código SQL [-]
 Select *
 From MiTabla
 Where MiCampo Like '%LoQueSea%'

Un Saludo.

mrmago 24-12-2005 21:22:16

como filtrar en un dbgrid por una palabra a buscar
 
:confused: no me funciona el codigo, estoy trabando en Delphi, mi tabla se llama numeros, el campo DESC_1, en el cual quiero encontrar cual esquier palabra que yo ponga en un campo Edit y que solo me aparescan los datos de todos los campos que contengan esa palabra
gracias por el apoyo

vtdeleon 24-12-2005 21:23:58

Saludos

No veo el por que no funciona, mira ver cambiando el % por asterisco(*).

mrmago 24-12-2005 21:26:08

me marca error desde select *, no me reconoce el from

vtdeleon 24-12-2005 21:29:06

Saludos

:confused: :confused: :confused: :confused:

Bueno, dinos los componentes (dataset) que utilizas, la sentencia utilizada (has copy-paste), y el codigo.

mrmago 24-12-2005 21:39:58

tengo la table que se despliega en un dbgrid que tiene los campos:
numero Desc_1 Desc_2
1034 es un foco de alta caja con 12
1035 color ambar de foco caja con 10
1036 conectores de colores individual

si lo filtro con un
numero.filter := 'desc_1'+QuotedStr(edit1.text);
numero.filtered := true;
tengo que teclear esactamente como esta en el campo "es un foco de alta" y esto me trae todos los registros que tenga esta descripcion, pero lo que necesito es que al momento de en el campo 'edit' tecleo foco me traiga todos los registro que tengan la palabra "foco" sin importar lo demas

vtdeleon 24-12-2005 21:54:30

Saludos

Creo que estas usando un Table para el caso. Vi por estos lado que se podia hacer esto (no lo he probado)
Código Delphi [-]
numero.filter := 'desc_1'+QuotedStr('%'+edit1.text+'%');
numero.filtered := true;
Poner los signos usando la propiedad Filter.

LA solucion que te ha dado Marcos es para usarlos con Tquery y en su propiedad SQL poner la sentencia dada. Y que a mi parecer es la mejor opcion.

mrmago 26-12-2005 23:47:09

Feliz navidad primero que nada, no me reconoce ni los caracteres '%' ni '*', ya le busque de todas las maneras posibles y nada, me dice que el formato del filtro no es valido

fjcg02 29-12-2005 18:18:52

Buenas a todos, creo que os falta poner

Código:

numero.filter := 'desc_1 LIKE '+QuotedStr('%'+edit1.text+'%');
numero.filtered := true;

Por si acaso, probad con un valor que no utilice like, sindo exactamente el valor del edit igual al valor del campo.

Código:

numero.filter := 'desc_1 = '+QuotedStr(edit1.text);
numero.filtered := true;

Un saludo

mrmago 30-12-2005 19:52:25

gracias a todo por el apoyo, las ideas de todo me fueron muy utilies, asi quedo el codigo:
str := 'where num_part+Desc_1+desc_2+desc_3+desc_4 like '+QuotedStr('%' + Edit3.Text + '%');
Query1.close;
Query1.sql.clear;
Query1.sql.add('Select * from "numeros de parte"');
Query1.sql.add(str);
Query1.Open;
Query1.Active := true; {que esto era lo que me faltaba y asociarlo a un DataSource y sobre todo a un DBGrid para que me lo mostrara filtrado }

gracias nuevamente


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

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