Foros del Web » Soporte técnico » Ofimática »

Listas Dependientes en Access

Estas en el tema de Listas Dependientes en Access en el foro de Ofimática en Foros del Web. Hola colegas, mi problema es el siguiente Tengo una lista desplegable en mi formulario que contiene el nombre de las provincias de mi país, lo ...
  #1 (permalink)  
Antiguo 27/06/2008, 06:45
Usuario no validado
 
Fecha de Ingreso: septiembre-2007
Ubicación: Cuba
Mensajes: 202
Antigüedad: 16 años, 7 meses
Puntos: 5
Pregunta Listas Dependientes en Access

Hola colegas, mi problema es el siguiente

Tengo una lista desplegable en mi formulario que contiene el nombre de las provincias de mi país, lo que necesito es que al seleccionar la provincia que yo quiera en otra lista me salgan los municipios correspondientes a la provincia seleccionada. Relacionando tablas ya lo consegui, haciendo una relación de uno a varios peo no se como hacerlo en el formulario. De antemano mil gracias

Salu2
Reyvi
  #2 (permalink)  
Antiguo 28/06/2008, 19:37
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Listas Dependientes en Access

MIra esta estupenda explicacion sacada de otro foro, donde Xavi aclara el tema:

'************************************************
Aunque no se trata de una funcion propiamente dicha, es un tema recurrente en el foro. Deciros que existe un ejemplo en la Web de Chea http://jbengoechea.com/RptCp.htm#combos

Imaginemos que desarrollamos una aplicacion para un taller de vehiculos. Los vehiculos pertenecen a una marca, que tiene diferentes modelos que, a su vez, tienen diferentes versiones.

En nuestro formulario continuo vemos, al principio, todos los vehiculos que han pasado por el taller, y en el encabezado del formulario hemos puesto 3 combos para poder filtrar los datos. El formulario esta basado en una consulta a la tabla Vehiculos: SELECT * FROM Vehiculos ORDER BY Matricula;

El primer combo se llama Marcas y esta basado en una consulta a la tabla del mismo nombre. SELECT IdMarca, NombreMarca FROM Marcas; 2 columnas, la primera dependiente y anchos 0cm;4cm

El segundo combo (Modelos) esta basado en una consulta a la tabla Modelos (esa tabla contiene un campo IdMarca que los relaciona con la tabla Marcas). SELECT IdModelo, IdMarca, NombreModelo FROM Modelos; 3 columnas, la primera dependiente y anchos 0cm;0cm;4cm

El tercer combo (Versiones) basado en una consulta a la tabla Versiones (que contiene un campo IdModelo que lo relaciona con la tabla Modelos). SELECT IdVersion, IdModelo, NombreVersion FROM Versiones; 3 columnas, la primera dependiente y anchos 0cm;0cm;4cm

Cuando abrimos el formulario, el primer combo nos muestra todas las marcas. Al seleccionar una de ellas se produce el evento AfterUpdate. Aqui es donde decidimos que el contenido del combo Modelos debe variar para mostrar solo los de esa marca.

Me!Modelos.RowSource = "SELECT IdModelo, IdMarca, NombreModelo FROM Modelos WHERE IdMarca=" & Me!Marcas & ";"

A continuacion cambiamos el RecordSource del formulario para mostrar los vehiculos que coinciden con esa Marca:

Me.RecordSource = "SELECT * FROM Vehiculos WHERE IdMarca = " & Me!Marcas & " ORDER BY Matricula;"

Ahora el combo Modelos solo muestra los de la marca escogida en el combo Marcas.

Al seleccionar un modelo, tambien en el AfterUpdate, debemos cambiar el contenido del combo Versiones:

Me!Versiones.RowSource = "SELECT IdVersion, IdModelo, NombreVersion FROM Versiones WHERE IdModelo=" & Me!Modelos & ";"

Y actualizar el RecordSource del formulario:

Me.RecordSource = "SELECT * FROM Vehiculos WHERE IdMarca = " & Me!Marcas & " And IdModelo = " & Me!Modelos & " ORDER BY Matricula;"

Al seleccionar una version, tambien en el AfterUpdate, actualizamos el RecordSource del formulario:

Me.RecordSource = "SELECT * FROM Vehiculos WHERE IdMarca = " & Me!Marcas & " And IdModelo = " & Me!Modelos & " And IdVersion = " & Me!Versiones & " ORDER BY Matricula;"

Ahora queremos restaurar esos combos para que nos muestren todos los registros. Ponemos un boton Restaurar que nos debe devolver los RowSources originales y dejar los combos en blanco. Tambien cambiamos el RecordSource para devolverlo a su estado original.

Private Sub restaurar_Click()
Me!Marcas = Null
Me!Modelos.RowSource = "SELECT IdModelo, IdMarca, NombreModelo FROM Modelos;"
Me!Modelos = Null
Me!Versiones.RowSource = "SELECT IdVersion, IdModelo, NombreVersion FROM Versiones;"
Me!Versiones = Null
Me.RecordSource = "SELECT * FROM Vehiculos ORDER BY Matricula;"
End Sub


Espero os sirva.
'****************************************

Un saludo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:51.