Para construir cuadros combinados dependientes necesitamos:
1. Orígenes de filas con consultas cuyos criterios se basen en los cuadros combinados precedentes.
2. Eventos que recalculen los valores de los cuadros combinados dependientes.
Tenemos tres tablas relacionadas Tbl_CCAA, Tbl_Provincias y Tbl_Municipios. Creamos tres cuadros combinados con origen en sus respectivos campos.
1. Cuadro combinado CC.AA.
Accedemos a las propiedades del cuadro combinado haciendo clic sobre icono Hoja de propiedades o seleccionando el cuadro y presionando Alt+Entrar o F4. En la pestaña Datos, en la propiedad Origen de la fila seleccionamos las comunidades autónomas de la tabla homónima:
En la pestaña Eventos, seleccionamos Después de actualizar, clic en el cuadro con tres puntos suspensivos y, a continuación, clic en Generador de código.
En el editor de visual escribimos el siguiente código:
Private Sub CCAA_AfterUpdate() Provincia.Value = Null Provincia.Requery Municipio.Value = Null Municipio.Requery End Sub
Cada vez que cambia la selección del cuadro combinado CCAA, asigna un valor nulo a los cuadros Provincia y Municipio, y recalcula ambos. Sin recalcular, el cambio en el cuadro combinado precedente no tendría efecto en las consultas de origen de fila basadas en los mismos. Pues los cuadros combinados se actualizan al abrir el formulario.
2. Cuadro combinado Provincia.
En la Hoja de propiedades, en las pestaña Datos, Origen de la fila, hacemos clic sobre los tres puntos para diseñar una consulta que relacione las tablas Tbl_CCAA y Tbl_Provincias. Introducimos un criterio basado en la selección del cuadro de combinado precedente: CCAA.
Private Sub Provincia_AfterUpdate() Municipio.Value = Null Municipio.Requery End Sub
Cada vez que cambia la selección del cuadro combinado Provincia, asigna un valor nulo a Municipio, y lo recalcula.
2. Cuadro combinado Municipio.
Repetimos el paso anterior, esta vez con el cuadro municipio. En la Hoja de propiedades, en las pestaña Datos, Origen de la fila, hacemos clic sobre los tres puntos para diseñar una consulta que relacione ambas tablas, Tbl_Provincias y Tbl_Municipios. En criterios acotamos la consulta en función de la elección del cuadro provincias.
Esta vez no es necesario crear el evento Después de actualizar.
Tras estos pasos, ya tendríamos los tres cuadros combinados sincronizados en cascada.
Entradas relacionadas
Si se siguen los pasos en detalle, funciona perfectamente!!! Sólo tener en cuenta que los nombres Provincia y Municipio, son los nombres de los cuadros combinados a los que se hace referencia.
ResponderEliminarPerfecto !!! Muy buena utilidad.!!!
ResponderEliminarSólo tener en cuenta que dónde se indican los nombres Provincia y Municipio, se está refiriendo a los nombres de los cuadros combinados, lo que por defecto el asistente coloca como 'Cuadro_CombinadoNN'.
Fantastico, gracias.
ResponderEliminarMe alegro. Gracias y un saludo.
EliminarBuenos dias
ResponderEliminarHola, me pueden decir como le hago cuando ya esta hecho el cuadro combinado al momento de estar introucinedo caracteres la lista que despliega del cuadro combinado se vaya reduciendo??
Buenas tardes, eso sería otra solución diferente. Consulta el enlace
Eliminar'Usar un cuadro combinado para buscar al teclear en Access' que he añadido al final, en entradas relacionadas. Saludos
Parecía fácil pero... A los combos les he asignado el mismo nombre del ejemplo pro anteponiendo el prefijo "cbo". He seguido todos los pasos pero el combo 3 no presenta nada.
ResponderEliminarOrígen de la fila:
Combo 1: SELECT tblCCAA.CCAA, * FROM tblCCAA;
Combo 2: SELECT tblProvincias.Provincia, tblCCAA.CCAA, * FROM tblCCAA INNER JOIN tblProvincias ON tblCCAA.CCAAID = tblProvincias.CCAAID WHERE (((tblCCAA.CCAA)=[Formularios]![frmCuadrosCombinados]![cboCCAA])) ORDER BY tblProvincias.Provincia;
Combo 3: SELECT tblMunicipios.Municipio, tblProvincias.Provincia, * FROM tblProvincias INNER JOIN tblMunicipios ON tblProvincias.ProvinciaID = tblMunicipios.ProvinciaID WHERE (((tblProvincias.Provincia)=[formularios]![frmCuadrosCombinados]![cboProvincias])) ORDER BY tblMunicipios.Municipio;
AfterUpdates:
Private Sub cboCCAA_AfterUpdate()
cboProvincia.Value = Null
cboProvincia.Requery
cboMunicipio.Value = Null
cboMunicipio.Requery
End Sub
Private Sub cboProvincias_AfterUpdate()
cboMunicipio.Value = Null
cboMunicipio.Requery
End Sub
¿Qué estoy haciendo mal?. Gracias por vuestro tiempo y atención
Hola Javier, repasa bien las consultas orígenes de filas y los nombres de los cuadros combinados. Veo varias erratas en el código que has escrito: comas al final del último campo y un asterisco. Además solamente necesitas seleccionar un campo como origen (provincia y municipio). En Combo3 denominas a un cuadro combinado como cboProvincias y en el evento after update lo llamas cboProvincia (le falta una s). Saludos.
EliminarTengo una duda, cuando se escribe el código en la consulta esta el siguiente código [Formularios]![Formulario1]![CCAA], en mi caso mi tabla tiene el nombre de Tipo de servicio, por lo que escribí [Formularios]![Formulario1]![Tipo de servicio], mi duda es si debo dejar así el código o debo escribir entre los espacios en blanco guion bajo, siendo de la siguiente manera [Formularios]![Formulario1]![Tipo_de_servicio]
ResponderEliminarTardas menos en comprobarlo tú mismo que en preguntarlo. Saludos.
EliminarHola, tengo problemas con los combos en cascada, al incluirlos en un formulario que apunta a una consulta en la que están relacionadas varias consultas con otros campos combinados, el combo en cascada no funciona. ¿Hay alguna forma de solucionar dicho problemilla? Los combos en cascada los quiero utilizar para incluir datos en una ficha de cliente, de forma que al seleccionar la provincia solo me permita poner la localidad correspondiente a dicha provincia.
ResponderEliminarAsimismo, estoy buscando como poner combos en cascada con selección múltiple en el último combo y no encuentro información, ¿podrías ayudarme?
Muchas gracias.
Buenas tardes, debes acudir a un foro de resolución de problemas. Saludos.
EliminarHola me sirvió bastante tu post! pero quería hacerte una consulta relacionada al paso siguiente, resulta que tengo 4 tablas en donde selecciono una mediante un cuadro de lista y luego ingreso un rut mediante un cuadro combinado, Luego necesito que me liste a esa persona... es decir, que abra la hoja de datos o algo parecido con los datos del rut que ingreso. si pudiera ayudarme seria supero he buscado hasta el cansancio
ResponderEliminarno podrias pasarme la base de datos en access asi la veo y me ubico con todo lo exp;icado por favor mi correo es themenace244@hotmail.com
ResponderEliminarNo, salvo que estés dispuesto a pagar por el servicio. Saludos.
EliminarHola,
ResponderEliminarTengo una duda.... ¿Se pueden hacer listas anidadas utilizando la vista de Hoja de Datos?
Lo he intentado, pero en la lista secundaria me muestra las opciones según el último valor cargado en la última lista principal....
Gracias!
Como podría hacer para si una Comunidad es uniprovincial, automaticamente aparezca el nombre de su única provincia en el cuadro combinado "Provincia" ?
ResponderEliminarEs que así como esta, aunque sea de una sola provincia, hay que hacer click en el desplegable y seleccionarla.
Gracias.
Editando el código en 'Después de actualizar' estableciendo por defecto el primer valor en lugar de nulos.
EliminarSaludos
Muchisimas gracias!
EliminarHola! genial!! Cómo podría guardar los datos de esos cuadros combinados en la tabla? Ya que por ejemplo, en mi caso:
ResponderEliminarTengo una agenda para dar citas. Los cuadros combinados que he creado son:
- Cuadro_combinado65
- Paciente
- dnip
- numpac
De tal modo que seleccion Cuadro_combinado65, de ahí sólo me saldrán los pacientes asociados a ese cuadro, luego he creado una lista para el dnip y para el numpac. Una vez seleccionado todo esto, me gustaría que se guardara la cita ya que he creado el botón de imprimir cita y el justificante.
Si lo hago sobre la marcha puedo imprimir la cita sin problema, pero el problema viene cuando por ejemplo el 1 de mayo le he dado cita para el 3 de junio, el 1 de mayo imprimo sin problemas la cita, pero cuando entro el día 3 hay que seleccionar otra vez todos los datos para darle el justificante de la visita.
¿Cómo podría guardar esos datos para que no tenga que volver a escribirlos?
No sé si me he explicado correctamente jejeje.
Gracias!!!!
-
Buenas Daniel, has podido solucionar esto? yo estoy teniendo el mismo problema. ME interesa rescatar del cuadro combinado "municipios" por ejemplo el campo Id para volcarlo en otra tabla
EliminarHola aplique la sugerencia y funciona bien la primera vez, pero luego no refresca los cuadros de provincia y municipio cuando hago otra selecciom del ccaa
ResponderEliminarHola:
ResponderEliminarTengo una BDD en la que quiero una cascada de datos, a partir de País, Comunidad, Provincia, Vegueria, Comarca, Subcomarca, Municipio y Lugar. He seguido paso a paso el tutorial, pero en la ejecución me aparece un error 424. Ruego si me pueden ayudar. Podría pasar datos por privado. Gracias
No hago trabajos de consultoría gratis. Saludos.
EliminarSin problema. Disculpas. Saludos.
EliminarPara intentar resolverlo empieza con dos cuadros combinados. Cuando funcione y lo entiendas bien, ve añadiendo más cuadros combinados.
EliminarHola. Gracias. Con el ejemplo que indicáis de tres, funciona perfectamente, pero cuando intento ponerle más de 3, entonces ya no va bien. Supongo que algo haré mal con las relaciones de los combos. Seguiré mirando a ver.
EliminarHola buenas a mi me ha funcionado perfecto. En mi caso en vez de tres cuadros combinados, tengo 6, se van actualizando los campos correctamente, sin embargo cuando los relleno y paso al siguiente registro o creo uno nuevo o cierro el formulario, los campos de estos cuadros que había rellenado se eliminan y no aparecen. No se a que se puede deber, es como si no guardara la selección.
ResponderEliminar