PDA

Ver la Versión Completa : pregunta sobre Filtros


Shion
21-08-2004, 09:11:25
Un saludo para todos.

Quisiera saber como puedo hacer para hacer filtros del tipo:

'*texto*'

* = comodin (que se usa para decir que no importa lo que haya ahi)
texto = a las letras que doy cuando quiero filtrar en un tabla.

he intentado de esa forma y no me filtra nada.

Pues si alguno de uds. pudiera de alguna forma ayudarme le estaria agradecido.

PD. funciona bien cuando le doy de esta forma 'texto*'

moesis
22-08-2004, 03:09:11
Saludos,

En primer lugar deberías de decirnos que sistema de base de datos utilizas, pues dependiendo de cada uno de ellos es el formato.

En SQL (Interbase, MySQL, MS SQL Server, ...) sería algo así como

SELECT * FROM tabla WHERE campo LIKE '%valor%';

En BDE basandote en SQL.

SELECT * FROM tabla WHERE campo LIKE '*valor*';

En BDE basandote en los métodos de TTabla y TDataSet



Tabla.Filtered := false;
Tabla.Filter := 'Campo like ' + QuotedStr ('*Campo*');
Tabla.Filtered := true;



Esperando haberte aclarado algo más....

Shion
23-08-2004, 03:49:53
gracias por responder.
___________________

Estoy usando una tabla paradox , con delphi 7

he probado con el uso de "like", pero al parecer "table.filter" no tiene soporte para esto pues buscando en la ayuda de delphi solo me sale esto:

Operator Meaning
< Less than
> Greater than
>= Greater than or equal to
<= Less than or equal to
= Equal to
<> Not equal to
AND Tests two statements are both True
NOT Tests that the following statement is not True
OR Tests that at least one of two statements is True
+ Adds numbers, concatenates strings, adds numbers to date/time values (only available for some drivers)
- Subtracts numbers, subtracts dates, or subtracts a number from a date (only available for some drivers)
* Multiplies two numbers (only available for some drivers)
/ Divides two numbers (only available for some drivers)
* wildcard for partial comparisons (FilterOptions must include foPartialCompare)

vic_ia
23-08-2004, 18:59:22
hola...

se me ocurre que lo mejor para realizar un filtro como lo que tu tienes lo mejor es usar el evento OnFilter del DataSet que utilices,... de esta forma tu puedes dar las condiciones bajo las cuales deseas que el registro sea parte de los que devuelve el filtro o no...

saludos...

Shion
23-08-2004, 20:00:24
mediante el evento onfilter lo habia probado y funciona bien,

solo que lei por alguna parte que no es recomendable usar esto, por que este tipo de filtro se aplica en el cliente por lo cual deben bajarse por la red incluso los registros que no satisfagan el filtro.

no habra otra manera de hacer ese filtro?:confused:

roman
23-08-2004, 20:26:28
solo que lei por alguna parte que no es recomendable usar esto, por que este tipo de filtro se aplica en el cliente por lo cual deben bajarse por la red incluso los registros que no satisfagan el filtro.


Y lo mismo sucederá con la propiedad Filter. Precisamente por esto lo más recomendable es lo que moesis te comentó desde un principio: usa consultas SQL. Así el filtro se aplica en el servidor y sólo mandará los registros que satisfagan la condición.

// Saludos

roman
23-08-2004, 22:58:23
Prueba enlazar el TQuery al alias mediante una componente Database y a ésta ponle su propiedad LoginPrompt = false.

// Saludos

Shion
25-08-2004, 01:15:12
Gracias a todos, ya me funciono todo bien,
gracias por sus consejos.

Saludos