Un filtro se ejecuta del lado cliente, por tanto, si está en red, viajará
todos los registros de la tabla y despues se hará la restricción del filtro. Si no está en red, se seleccionan
todos los registros y despues se hace el filtro... es un desperdicio de recursos y tiempo (desde mi punto de vista).
Al menos en paradox, no se permiten filtros con comodines del tipo "%fer%", (tú utilizas el asterisco... será que usas Access
) sino que habría que crear un filtro tal que así:
Código Delphi
[-]
table1.filtered := false;
table1.filter := nombre > 'P' and nombre <'S';
table.filtered:= true;
que no es lo que pide, y además es más costoso para el programador.
Por otra parte, no puedes compartir ese TTable con otras ventanas, porque siempre mostraría los datos filtrados, y tarde o temprano necesitará un filtrado distinto para cada ventana.
Una consulta es totalmente independiente de la tabla, incluso la tabla puede estar cerrada y la consulta funciona perfectamente.
Una Consulta puedes ordenarla ascendente y descendentemente, por el campo "filtrado" o por otro cualquiera, usando los índices que se hayan creado para ese propósito en la BBDD. El filtro
creo recordar, no usa los índices.
La consulta puedes dejarla preparada para tener un acceso más rápido de ejecución, esto solo funciona con parámetros:
Código Delphi
[-]
query1.sql.text := 'select * from tabla where campo like :nombre order by Nombrecliente';
if not query1.Prepared then
query1.Prepare;
A partir de ahora solo hay que hacer:
Código Delphi
[-]
query1.Close;
query1.parambyname('nombre').asString:= edit1.text+'%';
query1.Open;
Amén de poder usar inner joins en lugar de campos Lookup y restringir los datos con mucha más comodidad.
Saludos.