PDA

Ver la Versión Completa : Filtrar tabla al estilo AYUDA


phantom__2k
06-03-2004, 02:34:42
Deseo filtrar una tabla al estilo ayuda de Windows en donde al ir escribiendo cada letra se va filtrando dependiendo del caracter introducido, por ejemplo si en un Edit escribo la letra A se filtrara por ejemplo lo siguiente:
Abel
Armando
Angel
Angeluz

pero si despues de "A" escribo la n (osea que en Edit quede "An") quedará como sigue:
Angel
Angeluz

Y luego que pueda navegar entre la lista filtrada y al presionar Enter me muestre el registro correspondiente.

jachguate
06-03-2004, 03:14:26
Podes valerte de un TEdit, y en su evento OnChange cambiar el valor del "Filtro". Para filtrar... dependerá de los componentes de acceso a datos que uses, aunque lo mas óptimo resulta ser utilizar un Query e ir actualizando el valor introducido por el usuario en el where de la consulta.

Luego, para navegar... valete de un TDBGrid, y su evento OnKeyPress para determinar el momento en que el usuario presiona enter (ascii #13).

Hasta luego.
;)

__cadetill
06-03-2004, 12:07:35
Sólo decir que, dependiendo de la tabla que uses, el número de registros, si atacas en local o en remoto, si hay o no índices definidos por los campos de búsqueda,...... este tipo de consultas puede irte bastante lento

Personalmente no soy partidario de ellos, pero cada cual.....

Rox77
03-05-2004, 16:57:42
Creo q lo q buscas Phantom 2k es algo asi
en un edit cuando pulses intro (usa el evento OnKeyPress o el q quieras) q ejecute la siguiente consulta


var
s:string;
begin
s:='=>"'+Edit1.text+'"';

Q.close;
Q.SQL.clear;
Q.SQL.add('SELECT * FROM TABLA WHERE NOMBRE '+s);
Q.SQL.open;

PARA BUSQUEDAS DE "CONTENIDO EN" puedes usar esta otra opcion..

var
s:string;
begin
s:='"%'+Edit1.text+'%"';

Q.close;
Q.SQL.clear;
Q.SQL.add('SELECT * FROM TABLA WHERE NOMBRE LIKE '+s);
Q.SQL.open;

lo unico q tienes q hacer es poner el contenido del edit entre % y entre Comillas dobles que es lo que accepta Access en mi caso.

te deberia funcionar. De lo q te dice Cadetill ya no me hago responsable...jeej...a mi de momento me funciona pero no tengo muchos registros.Saludos.

roman
03-05-2004, 17:07:20
De lo q te dice Cadetill ya no me hago responsable...jeej...a mi de momento me funciona pero no tengo muchos registros

Pero lo que dice cadetill será cierto (lo de ir lento) en casos como los que él menciona. Un filtro así puede hacerse si el acceso es en tablas de escritorio o bien si se usan ClientDataSets. Pero como lo pones tú, siempre será lento ya que estás ejecutando la consulta SQL por cada tecla que se oprima.

// Saludos

Rox77
03-05-2004, 17:37:49
Ya habia dicho q no tengo muchos registros pero aun asi...puede poner un boton para activar el filtro o desactivarlo no con cada evento OnKeyPress...o solo cuando pulse intro ¿ NO ?
Ademas si va a tener q filtrar de una tabla de 200.000 registros pues hombre algo tardara no?...y si no pues nada ale a dar soluciones. ;)
Saludos.