Listas restringida en un campo por otro campo

Tengo una lista de departamentos y sus respectivos municipios. Quiero crear un formulario en access 2003 de tal forma que al escoger el departamento de una lista desplegable, me aparezcan en el siguiente campo del formulario solo los municipios correspondientes a este departamento. Si se puede hacer automático sería estupendo, ya que no sé mucho de código.

2 respuestas

Respuesta
1
Una pregunta clásica (respondida en distintos foros como unas 5 veces cada día)
Mira esto: http://www.mvp-access.com/foro/forum_posts.asp?TID=9935
(El foro requiere registro, pero vale la pena, ya lo veras)
Xavi
Respuesta
1
Vamos a ver si consigo explicarte una forma sencilla.
Te comento, yo lo he probado utilizando una serie de nombres que me he inventado. Ahora te toca a ti sustituir mis nombres por los tuyos, pero en resumen el proceso es el mismo.
Supongamos que tienes una tabla llamada 'tblMunicipios' cuyos campos sean el 'departamento' y el 'municipio'. En esta tabla tendrás la lista de municipios con el nombre del departamento al que corresponde.
En el formulario (llamémosle 'formMunicipios' por poner un nombre), pondrás un cuadro combinado para el departamento (llamémosle 'cuadroCombinadoDepartamentos') y otro para el municipio (su nombre puede ser 'cuadroCombinadoMunicipios').
Bien, en las propiedades del cuadro ''cuadroCombinadoDepartamentos'', en donde pone 'Origen de la fila' tienes que poner lo siguiente: "SELECT DISTINCT departamento FROM tblMunicipios ORDER BY 1;" (sin las comillas)
En el origen de la fila del otro cuadro 'cuadroCombinadoMunicipios' tienes que poner lo siguiente: "SELECT DISTINCT municipio FROM tblMunicipios WHERE (((tblMunicipios.departamento)=forms!formMunicipios!cuadroCombinadoDepartamentos)) ORDER BY 1;" (tampoco lleva las comillas)
Para terminar, nos queda indicarle a nuestro formulario que cuando cambie el valor del 'cuadroCombinadoDepartamentos' nos actualice el contenido de 'cuadroCombinadoMunicipios'.
Para ello, en las propiedades del primero (de 'cuadroCombinadoDepartamentos') pondremos '[Procedimiento de evento]' en la propiedad 'Al cambiar' y pincharemos en el botoncito que aparece al lado con tres puntos "...".
Con esto entramos en el editor de Visual Basic.
Tendrás que poner el siguiente código:
Private Sub cuadroCombinadoDepartamentos_Change()
    Me.cuadroCombinadoMunicipios.Requery
End Sub
Una vez hecho eso... guarda tu formulario y pruébalo. Si lo has hecho bien tiene que funcionarte.
Suerte y un saludo
Muchas gracias experto. He probado tu respuesta pero funciona parcialmente, solo me actualiza por una sola vez el campo municipio del formulario. Es decir, escogo por ejemplo el departamento de Antioquia en el campo departamento del formulario y efectivamente me muestra los municipios que pertenecen a Antioquia en el campo municipio, pero cuando voy de nuevo y elijo otro departamento, por ejemplo Amazonas, me sigue mostrando los municipios de Antioquia. Te agradezco si me pueden colaborar nuevamente. Lo otro es que a veces los listados no se me muestran, es decir la lista me aparece en blanco.
Gracias de nuevo y espero tu respuesta.
Por lo que me comentas, el problema está en que no se está refrescando la lista del campo municipio.
Comprueba que hayas escrito correctamente la línea:
Private Sub cuadroCombinadoDepartamentos_Change()
Ten en cuenta que esa línea es así siempre que el cuadro combinado donde tienes la lista de departamentos se llame exactamente 'cuadroCombinadoDepartamentos'. Si tiene otro nombre tendrías que sustituir esta parte del código.
Pruébalo y si no te funciona me envías una dirección de correo para mandarte una base de datos con una muestra.
Ya me funcionó!, tuve que volver a hacer la tabla donde tenía los datos, pues a veces no se visualizaba la lista despegable. Las instrucciones estaban perfectas ¡Muchas Gracias!, perdón por la preguntadera pero quisiera hacerte otra: ¿Para hacerlo con tres campos en la misma tabla funciona igual? ¿O si tengo los tres campos relacionados cada uno en tres tablas difeferentes funciona igual? De nuevo te agradezco... ha sido todo muy útil.
El tener los 3 campos en una tabla o 2 tablas con dos campos cada uno, dependerá de las dependencias que existan entre los datos.
Supongamos que tus tres datos son "Continente - País - Municipio". En este caso tendrían que ir en 2 tablas, pero si tus datos son "Departamento - Municipio - Teléfono del comercial del municipio", entonces podrían ir en una única tabla.
Esto es lo que se conoce como normalización de una base de datos.
Resumiendo, explicame cuales son los datos que quieres guardar y te cuento si es mejor en una o dos tablas (supongo que van a ser dos, pero ya te lo confirmaré).
En cuanto al manejo con los cuadros combinados... exactamente el mismo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas