PDA

Ver la Versión Completa : ayuda con listas de autoyenado


metroyd
19-02-2008, 22:18:18
Hola que tal? Les escribo para pedirles su ayuda en algo que espero me explique: Estoy haciendo una aplicacion donde se van a almacenar informacion, ahora me interesan los campos Region, Municipio y Localidad. Tengo dos sugerencias de llenado de estos campos:
1. Usar listas o combo box, por ejemplo, en Region solo iran 6 regiones (6 items en la lista) pero cuando yo elija una region, el siguiente campo de Municipios debe llenarse con la lista de municipios de SOLO ESA REGION para que yo despues elija uno de ellos y cuando elija un muncipio el tercer campo de Localidades se debe llenar con las localidades de dicho municipio y asi poder elegir un municipio. Esto es tipico en los formularios de llenado de informacion personal en paginas de internet, donde pones tu pais, despues aparecen los estados de tu pais, despues eliges tu provincia, No se si me explique????

2. La segunda sugerencia es mas complicada y mucho mas vistosa. Es como la busqueda de un archivo en el winamp, donde pulsas la tecla '.'(punto) y aparece un textbox, y conforme vayas escribiendo aparecen resultados.

En ambas sugerencias, si el dato que se busca no Existe, adicionarlo mediante un text box o algo asi.
Espero me ayuden, gracias!!!!!

mamaro
20-02-2008, 21:32:35
Para la primera lo que necesitas es un maestro detalle, tal vez te sirva este link http://www.clubdelphi.com/foros/showthread.php?t=53416.

Para la segunda me parece que lo que necesitas es implementar una búsqueda incremental (lo cual es un poco más complicado)

1) Pones en un formulario un edit y un dbgrid.

2) Pones el componente de conexión y un consulta (una query) y en la sentencia SQL ponés:
Select *
from Articulos
where (upper(desc_articulo) like upper(:buscar))
Los dos Upper sirven para que cuando el usuario escriba se haga una comprobación insensible a mayúsculas (no se si es tu caso).

3) Ponés un DatSource y lo atás con la query y con el DBGrid.

4) En el evento OnKeyPress del edit ponés:
if Length(ed1.Text)>2 then
begin
q1.Close;
q1.ParamByName('buscar').AsString:=ed1.Text+'%';
q1.Open;
end;

En este caso la consulta se abre recién a la tercera letra pulsada.
Esto se podría pulir un poco así:
if Length(ed1.Text)>2 then
begin
q1.Close;
q1.ParamByName('buscar').AsString:=ed1.Text+'%';
q1.Open;
if q1.recordcount=0 then
begin
// habilito un botón para ingresar una nueva localidad por ejemplo
end
end;
Con esta modificación podés hacer alguna acción cuando no encontrás lo que el usuario busca.

Saludos y espero te sirva. :)

metroyd
21-02-2008, 02:28:22
Para la primera lo que necesitas es un maestro detalle, tal vez te sirva este link http://www.clubdelphi.com/foros/showthread.php?t=53416.

Para la segunda me parece que lo que necesitas es implementar una búsqueda incremental (lo cual es un poco más complicado)

1) Pones en un formulario un edit y un dbgrid.

2) Pones el componente de conexión y un consulta (una query) y en la sentencia SQL ponés:
Código SQL [-] (http://www.clubdelphi.com/foros/#)Select *
from Articulos
where (upper(desc_articulo) like upper(:buscar))

Los dos Upper sirven para que cuando el usuario escriba se haga una comprobación insensible a mayúsculas (no se si es tu caso).

3) Ponés un DatSource y lo atás con la query y con el DBGrid.

4) En el evento OnKeyPress del edit ponés:
Código Delphi [-] (http://www.clubdelphi.com/foros/#) if Length(ed1.Text)>2 then begin q1.Close; q1.ParamByName('buscar').AsString:=ed1.Text+'%';
q1.Open;
end;

En este caso la consulta se abre recién a la tercera letra pulsada.
Esto se podría pulir un poco así:
Código Delphi [-] (http://www.clubdelphi.com/foros/#) if Length(ed1.Text)>2 then begin q1.Close; q1.ParamByName('buscar').AsString:=ed1.Text+'%';
q1.Open;
if q1.recordcount=0 then begin // habilito un botón para ingresar una nueva localidad por ejemplo
end end;

Con esta modificación podés hacer alguna acción cuando no encontrás lo que el usuario busca.

Saludos y espero te sirva. :)

Hola gracias por tu respuesta, tratare de analizarla y lo implementaré. Cualquier duda te echo un grito!! Gracias nuevamente