Access - ayuda

 
Vista:

ayuda

Publicado por daniel (5 intervenciones) el 03/10/2006 18:51:01
Tengo una base de datos con las siguientes tablas

Departamento
Id_depto
departamento

municipio
id_municipio
id_departmaneto
municipio

aldea
id_aldea
id_municipio
id_departmaneto
aldea

caserio
id_caserio
id_aldea
id_municipio
id_departmaneto
caserio

barriocolonia
id_barrio
id_caserio
id_aldea
id_municipio
id_departmaneto
barrio_colonia

tengo un formulario que se llama generales
donde tengo varios combobox los cuales son
departamento
municipio
aldea
caserio
barrioo colonia

lo que quiero es que cuado seleccione un departamento en el combos de departamento
en el siguiente combos de municipio aparezcan solamente los municipios
al seleccionar el combo de aldeas solo aparescan las aldeas del municipio, al seleccionar caserio solo aparescan los caserios de ese municipio y al seleccionar barrio y colonia solo aparescan los barrios que pertenezcan a dicho caserio

en la pagina de chea encontre un ejemplo en el cual hice los combobox de departmento, municipio y aldeas los cuales me salen bien
ahora necesito saber como hacer para hacer los combos de caserios y aldeas
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ayuda

Publicado por Moises (75 intervenciones) el 04/10/2006 14:37:10
Wenas, el tema es largo , pero facil

Simplemente a cada combo tienes que ponerle lo siguiente :
Al evento CLICK del combo 1 le tendrasque actualizar la propiedad RowSource del combo2.

Para ello puedes hacer lo siguiente. (evento Click del Combo1)

If len(Combo1)>0 then
Combo2.Enabled = TRUE
Combo2=""
Combo2.RowSource = "SELECT campos FROM tabla WHERE criterio = '" & combo1 "'" ' (acuerdate de las comillas simples)
End if

Y asi en todos.
Es importante que cuando selecciones el combo 1, limpies el 2, 3, 4 , 5. ( y yo pondria su propiedad Enabled a FALSE). Cuando selecciones el 3, limpies el 4 y 5.... sabes ? asi sucesivamente.

Son unas cuantas lineas de código pero no es dificil.
Ya me diras que tal te ha ido...
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda

Publicado por Chea (1015 intervenciones) el 04/10/2006 22:36:03
El ejemplo de mi página es una forma de hacerlo, quizás la más sencilla, pero no la única ni la que yo uso habitualmente y, como habrás comprobado, cuando se complica, se complica.

No sería tan complicado si cada combo lo haces depender exclusivamente del anterior, pero me temo que quieres hacerlo depender de todos los anteriores.

La única solución clara es hacerlo mediante código. Es largo, pero fácil de entender lo que has escrito y, por tanto, fácil de corregir y de mantener.

En el evento AfterUpdate de cada combo lo que haces es cambiar el RowSource de los combos que dependen de él:

Sub Combo3_AfterUpdate()

me.combo4.Rowsource = "SELECT... WHERE IDelquesea = " & me combo3
me.combo5.Rowsource = "SELECT... WHERE IDelquesea = " & me combo3

End sub

No sé si te habré servido de ayuda

Saludos
José Bengoechea Ibaceta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda

Publicado por Moises (75 intervenciones) el 05/10/2006 11:17:46
Hola Chea, yo aqui le veo un problema:

me.combo4.Rowsource = "SELECT... WHERE IDelquesea = " & me combo3
me.combo5.Rowsource = "SELECT... WHERE IDelquesea = " & me combo3 ' <---

el ultimo tendria que hacer referencia al cuarto !!
me.combo5.Rowsource = "SELECT... WHERE IDelquesea = " & me combo4

Recuerda que cada combo tiene que hacer referencia al anterior. Y la verdad que no hace falta ponerle el ME delante ya que es un control directo del formulario

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:ayuda

Publicado por Chea (1015 intervenciones) el 05/10/2006 18:32:26
No es necesario que cada combo haga referencia al anterior.

Tal como ha diseñado Daniel las tablas, cada una de ellas contiene todos los id de los que depende, de manera que permite, por ejemplo, filtrar todas las aldeas, caserios o barrios que dependan de un Municipio, pues todos ellos tienen un idMunicipio. Por tanto lo lógico es filtrar, en el evento AfterUpdate de cada combo, todos los que dependen de él.

En cuanto a lo de usar Me, está claro que no es necesario, si lo pongo aquí es por costumbre, y la costumbre la tengo porque me facilita mucho el escribir código, ya que al escribir me. el IntellSense me muestra una lista desplegable con todos los objetos y propiedades, de manera que resulta mucho más fácil no cometer errores.

Saludos
José Bengoechea Ibaceta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar