PDA

Ver la Versión Completa : Autocompletar en un Edit


Walterdf
16-07-2003, 16:46:06
Hola
Tengo una aplicación que maneja una base de datos y en la búsqueda de datos necesito que cuando el usuario vaya ingresando lo que quiere buscar, el DbEdit (o lo que sea) se vaya autocompletando con los datos existentes en la base.
Intenté hacerlo con un DbLookupComboBox y funciona pero no muestra lo que yo voy escribiendo y además muestra registros repetidos.
¿Hay alguna forma de hacer esto?
Saludos y gracias.

Walter

ramiretor
16-07-2003, 23:57:06
Hola:

Sí es posible hacer lo que quieres . Yo entiendo que tienes un control DBedit y un control DBGrid que te va a ir acercando al registro que quieres encontrar. Lo que tienes que hacer es en el evento KeyPress del DBEdit ir actualizando la consulta para que cada vez que aprieten una tecla le pongas esa condición a la consulta. No recuerdo muy bien si se tiene que poner la propiedad keyPreview a true de la forma pero puedes probar.

Salu2 y espero te sirva

Walterdf
17-07-2003, 13:48:23
Hola Ernesto
Muchas gracias por responderme.
No me quedó muy claro lo que tendría que hacer, me gustaría que me expliques un poco mas porfavor.
Un abrazo.
Walter

ramiretor
17-07-2003, 17:17:52
Holas:

Bueno como te dije me imagino que tienes un TDBEdit ( o TEdit) y un TDBGrid que mostrará los resultados, conectas un TDataSource al Tquery y al DBGrid. En el evento onkeyPress del Edit escribirías algo como:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin

with query do
begin
Close;
Clear;
SQL.ADD('select "nombrecampos" from "nombretabla" where
"nombrecampo" like ' + edit1.text)
Open;

end;

end;

y eso es todo. Bueno aqui me parece que el problema es que no toma en cuenta el primer caracter, por lo que te aconsejo le eches un ojo al metodo onKeydown para que lo tome en cuenta. Recuerda tb que al query se le puede pasar ese valor como parámetro. Ahh y una cosa mas para que los campos no se te repitan, necesitas poner despues del Select la palabra distinct y seguir con la lista de campos.

Salu2 y espero te sirva


;:)

Walterdf
18-07-2003, 19:21:47
Ernesto, muchas gracias por tu molestia en responderme.
Quería decirte que tus sugerencias me fueron de mucha utilidad.
Un abrazo y gracias nuevamente.
Saludos.
Walter

Elfoscuro
22-12-2005, 15:59:29
Hola

He intentado usar la solución propuesta, pero me pasa una cosa curiosa con el query. Si pongo en el SQL la linea:

SELECT * FROM "_Ruta a mi BBDD" MiBBDD

Me saca todos los registros de la tabla, pero si la sustituyo por:


SELECT Campo1,Campo2,...,UltimoCampo
FROM ""_Ruta a mi BBDD" MiBBDD
WHERE Campo1 LIKE 'Valor'


No me saca ningún registro. Lo he probado en el SQL Wizard, y no saca nada tampoco. Si uso '=' en lugar de 'like' va bien, pero no consigo el efecto deseado, ya que no me saca registros hasta que 'Valor' sea igual a algún registro.

En la form tengo un query, un table, y dos datasource, conectados como sigue:

DataSource2 <- Query <- DataSource1 <- Table

No se si es necesario conectarlas así, si está mal, agradecería un consejillo sobre el tema de las conexiones, que creo que siempre lo hago un poco "a boleo".

Saludos del elfo

ElDioni
22-12-2005, 16:51:18
mira aqui http://www.clubdelphi.com/foros/showthread.php?t=14913

Delfino
22-12-2005, 21:52:20
mira el componente JvDBLookupEdit de la JVCL (http://homepages.borland.com/jedi/jvcl)

Elfoscuro
23-12-2005, 12:02:31
Muchas gracias. Probaré las JVCL. Le he pegado un vistazo a la demo y hay varias cosas MUY interesantes.

Además, es freeware, no?

Saludos del elfo