Supongamos este ejemplo: Una tabla de Artículos y cada artículo tiene su categoría. En un formulario queremos, mediante dos cuadros combinados, que al seleccionar del primero una categoría, en el segundo solo me muestre los artículos de esa categoría. Pues nada mas sencillo de realizar, así que pongámonos manos a la obra.
Lo mas importante es tener bien definidas las tablas.
Tabla Artículos
- IdArticulo
- Articulo
- IdCategoria
Tabla Categorias
- IdCategoria
- Categoria
Una muestra de la tabla Artículos. Nótese que el campo IdCategoría está configurado como un cuadro de búsqueda que lee de la tabla Categorías y oculta el campo clave para que solo muestre el nombre de la categoría y no su número.
IdArticulo | Articulo | IdCategoria |
1 | Monitor Sansung 22″ | Monitores |
2 | Disco Duro Seagate 2TB | Discos Curos |
3 | Memoria Kingston 4Gb DDR3 | Memorias |
4 | Monitor LG 27″ Full HD | Monitores |
Ahora vamos a nuestro formulario y ponemos el primer cuadro combinado y como origen de datos le damos la tabla Categorías, el asistente se ocupará de ocultar el campo clave para que quede mas bonito, y a continuación ponemos el segundo cuadro combinado y le damos como origen de datos la tabla Artículos. De esta tabla, el asistente también ocultará el campo clave, sin embargo nos dejará a la vista el último campo «IdCategoría» :

El segundo paso debe ser ir a las propiedades de cuadro combinado de Artículos y en el apartado «Ancho de columnas» dejarlo mas o menos así: 0cm ;4cm; 0cm con lo cual definimos el ancho de la última columna en cero y no se muestra aunque siga existiendo.
Ahora mismo los cuadros combinados aún son independientes uno del otro, tenemos que configurar la forma para que el cuadro artículos solo muestre los de la categoría seleccionada en el primer cuadro combinado. un inciso antes de seguir, mis cuadros combinados se llaman»Cuadro_Combinado0″ y «Cuadro_Combinado2» porque no les he cambiado el nombre que pone Access por defecto al ponerlos sobre el formulario.
La forma de hacerlo es desde las propiedades del cuadro combinado Artículos:

En el generador de consultas nos situamos en «Criterios» del campo «IdCategoría» y hacemos referencia al Cuadro combinado de la categoría:
Con esto ya está, ale a probar vuestro cuadro combinado. Pues no majos, resulta que aún no funciona y os explico el motivo. Los cuadro combinados se rellenan con datos, o sea, con la tabla que tienen como origen en el momento de abrir el formulario o en el momento de cambiar de registro. Lo que os ha pasado, si habéis hecho la prueba, es que al mostrar el formulario, los dos cuadros combinados están vacíos aunque al pulsar el de categorías si nos las muestre y si seleccionáis una categoría no nos muestra los artículos que le pertenecen. El motivo es que, aunque el origen de datos de Artículos ya incluya un filtro por Categorías no se actualizará por el mero echo de seleccionar la categoría, recordad que los combos solo se actualizan al abrir el formulario.
¿Queréis una solución verdad? si no para que hemos llegado hasta aquí, pues ale, muy sencilla también, consiste en decirle al cuadro combinado «Categorías» que cuando se «Actualice» eso es cuando seleccionemos una, me vuelva a cargar el origen de datos del cuadro combinado de Artículos y lo vamos a hacer con código VBA ¿Que no sabéis programar? no os hace falta, ya veréis que esto es como leer una cartilla del cole.
Propiedades del cuadro combinado «Categorías»:
Pestaña Eventos, «Después de actualizar» seleccionamos «Procedimiento de evento» y pulsamos los puntitos para que nos lleve al editor de código para añadir la siguiente línea:
Private Sub Cuadro_combinado0_AfterUpdate() Me.Cuadro_combinado2.Requery End Sub
Lo que viene a decir que «Vete al cuadro combinado de Artículos y me lo actualizas por cojo…..» ejem, pues eso, que para chulos nosotros y lo forzamos a actualizarse. Y ya está, ahora si que funciona perfectamente.
Espero que os haya gustado el tutorial.
Hola buen día, solo para agradecerte y felicitarte, me gusto tu tutorial, y esta muy clarito. muchas gracias buen día
Muchas gracias, me alegro de que te haya sido útil.
Muy bién explicado el tutorial te felicito por tu paciencia y
dedicación estaba busque y busque hasta que dí con tu página
eres muy inteligente y yo aprendí de tí.
Me alegro enormemente de que te haya sido útil.
Excelente y muchas gracias por compartir tus conocimientos, eso dice mucho a favor de tu persona. y aprovecho la ocasion para pedirte un favor, en relacion a los combos en cascada, y es como le hago, para que cada vez que actualize o cambie el combo superior los inferiores queden en blanco, porque podria confundirse la informacion, saludos y gracias de antemano.
Hola edgar, para ello puedes, por ejemplo, hacer «Me.CuadroCombinadoQueQuieras.Value=Null»
Con eso borras cualquier dato que tenga el combo a la espera de que vuelvas a seleccionar otra cosa.
Antetodo muchas gracias por el post me has salvado la vida 🙂 Llevo atrancado varios días y no encontraba la solución. Mil gracias por compartir sus conocimientos y explicarlos de manera tan clara. Hasta ahora no conocía su web, desde ya tienes un seguidor más.
Un saludo y espero algún día devolver el favor 🙂
Muchas gracias a ti por esas palabras. Siempre es una alegría saber que mis publicaciones son de utilidad. 😉
Muy bueno. Pero tengo un problema con un caso concreto.
No me funciona cuando el cuadro combinado de cliente, permite seleccionar mas de una seleccion. Entonces al cambiar los cuadros combinados precedentes me da error. Como podria corregirlo? gracias
Estimado amigo, el procedimiento descrito es este artículo no admite selección múltiple pero lo tendré en cuenta para realizar un nuevo artículo que lo incluya.
Un saludo.
Hola tu explicación es muy buena, pero tengo un problema en particular y trate de poner en practica lo explicado y no funciono, espero que me puedas ayudar.
yo tengo un Formulario llamado Compras y dentro de el tengo un control de pestañas (control de ficha) y es hay donde tengo los cuadros combinados (Categoría y Articulo) al poner en practica lo explicado no funciona como se espera, te agradezco mucho me puedas ayudar.
Gracias
Hola Raul, en principio el hecho de colocar los cuadros combinados dentro de un control de pestañas no interfiere en nada sobre su funcionamiento por lo que el problema seguramente lo tendrás por otro lado pero con la información que me das no sabría exactamente donde. ¿Que es lo que no funciona? ¿Te devuelve algún error?
Como estas @docebit, tu respuesta me valió mucho al decirme que un control de pestañas no interfieren en nada, me hizo comenzar de nuevo y pude darme cuenta donde estaba el error y ya lo corregí era a la hora de usar el generador de consultas.
hay veces que una pequeña aclaración puede cambiar la forma de ver las cosas gracias por todo, seguiré aprendiendo mas sobre access y si tengo dudas te pido como un gran favor que me sigas ayudando
Hola @docebit,
Primero muchas gracias por el post, porque es justo lo que buscaba. Hace tiempo que lo publicaste, pero quería saber si me podías ayudar con un problemita que me encuentro. Hasta ahora se supone que he seguido al pie de la letra todos tu pasos, pero en el ultimo de actualizar me falla.
He hecho lo de la consulta y cuando vuelvo al formulario pues como bien explicaste no funciona. Así que sigo el paso siguiente de actualizar pero por mucho que ponga el código, adptando los nombres de mis cuadros combinados, me sigue sin funcionar. Puedo seleccionar una opcion del primer cuadro pero cuando voy al segundo el desplegable se queda en blanco y no me aparecen las opciones.
¿Alguna idea de lo que puedo estar haciendo mal?
Gracias de antemano
Es difícil darte solución sin ver lo que has hecho, aunque hayas seguido los pasos correctamente, indudablemente algo estás haciendo mal pero tendría que ver el ejemplo, o dame algún detalle más del código que has puesto en los combos o las consultas.
A ver si te explico:
1er cuadro combinado para tipo de producto, se llama Cuadro_combinado5
2º cuadro combinado para modelo, se llama Cuadro_combinado9
Mi formulario se llama «consumibles»
Primero le he puesto lo siguiente al cuadro combinado 9 en la consulta:
[Formularios]![consumibles]![Cuadro_combinado5]
Luego al segundo le he puesto el siguiente código:
Private Sub Cuadro_combinado5_AfterUpdate()
Me.Cuadro_combinado9.Requery
End Sub
espero que te sea de ayuda, voy a ver si tengo algun error en la consulta. Si necesitas otros detalles dimelo.
Ya sabemos algo más, pero insuficiente aún, deberías de analizar las consultas de ambos y, tener en cuenta el campo Id que estás usando en las consultas, esto es, si cabe, lo más importante.
Mil gracias.
En otros sitios recomendaban usar la función Me.Refresh dentro del evento onClick y solo hacia que dar problemas, sin embargo haciéndolo tal y como explicas funciona perfecto!
Saludos!
Gracias hombre, me alegro que te haya sido útil.
Gracias funciona perfecto, tutorial muy divertido!!!!
Simplemente agradecerte por esta forma tan fácil de explicar. Me ayudaste mucho, te estoy muy agradecido. Saludos!
Si tengo 2 cuadros combinados, uno dependiente del otro, dentro de una grilla de un subformulario, al modificarse la consulta del segundo cuadro combinado todos los valores del mismo combo en grillas anteriores desaparecen (ya que les cambia la consulta también). Me gustaría saber si hay una solución a esto o directamente no es posible.
Que versión de Access utilizas?
Hola, Excelente post, Duda aclarada. Pero tengo otra.
Tengo un formulario en vista de Hoja de datos. cada que agrego un registro nuevo y selecciono una nueva «categoria», la casilla «articulos» de los registros anteriores se ponen en blanco. Alguna idea?
Muchas gracias!
Que versión de Access utilizas?
Me pasa igual que los compañeros anteriores. Tengo dos cuadros combinados en cascada perfectos en un formulario, en el cuadro combinado categoria seleccionas una y en el segundo cuadro combinado productos solo te salen los productos de esa categoria, hasta ahí bien. Pero en un formulario con varios registros voy metiendo y se me borran los datos de los cuadros combinados de los productos se queda el campo en blanco
), es muy raro. Me podrías ayudar? . Utilizo access 2000
Este tipo de combos en cascada no funcionan bien en formularios continuos o de datos. Se deben utilizar en la vista «Un único formulario»
Muchas gracias por la respuesta tan rápida, pero aún poniendolo como me dices sigue sin funcionar. He pensado poner el combo categorías en un formulario y dentro de ese formulario meter un subformulario que contenga el combo productos. A ver si así me sale, porque es la única manera de atajar el problema y sobre todo de plantearlo. Mil gracias!
Muchas Gracias :D! de maravilla
Hola, tengo un pequeño problema, en la primera parte mencionas que «Nótese que el campo IdCategoría está configurado como un cuadro de búsqueda que lee de la tabla Categorías y oculta el campo clave para que solo muestre el nombre de la categoría y no su número». Quiza es algo super basico, pero soy nuevo en esto de acces y no se como se hace. ¿Sería posible me explicaras eso please?
Saludos
solucionado
Hola! Me gustaría felicitarte en primer lugar por el post, tengo que implementar cosas así y gracias a este post no he tenido ningún problema.
¿Sabes si sería posible realizar esto mismo en un subformulario? Pensaba que sería la misma lógica, pero no sé si es porque el subformulario va en formato «Hoja de Datos» o por alguna limitación que yo no conozca, pero no me funciona de esta manera.
¡Muchas gracias!
Hola. en los formularios con el formato hoja de datos no funciona. Si cambias en uno se te cambia en todos.
Buenas, he probado también el otro formato «tabular» y tampoco funciona. ¿Habría alguna forma de hacer esta dinámica de campos combinados en cascada en la tabla? De esta forma, entiendo que el subformulario heredaría esa propiedad de selección. Gracias!
Que yo sepa, no.
Buenos días he tratado de usar tus ejemplos para filtrar una consulta de productos con tres cuadros combinados
tengo access 2013
ConsultaProductos ampliados:
Id producto -numero
Codigo-texto corto
Nombre Producto- texto corto
Precio-moneda
categoria -texto corto
marca – texo corto
combos:
combocategoria
comboMarca
combocodigo
en eventos despues de actualizar combomarca
aplico filtro Me.Filter = «[Proveedores.Compañía] = ‘» & Me.Cuadro_combinado_marcacategoria.Column(0) And «[Categorías.NombreCategoría]= ‘» & Me.Cuadro_combinado_marcacategoria.Column(1)
pero me da error de sintaxis
si aplico un solo me trabaja perfectamente
el filtro para combo marca solo me filtra la marca pero no me trae la categoria
por favor me puedes ayudar
Me faltan datos para poder orientarte. Si quieres me puedes mandar el ejemplo, sólo con lo imprescindible, y le echo un vistazo.
Buenas , agradeciendo tu repuesta dime como te hago llegar el ejemplo en RAR o como lo requieras
mandame tu correo para enviartela
Hola buenos dias.
Primero muchas felicidades por tu informacion me ha salido correctamente. Pero tengo un problema. Tengo Casi igual la misma informacion en mi formulario. Solo que en artículos yo tengo vendedor y en categoría yo tengo agencia. Ya me funciona correctamente. Pero al momento de ver la tabla General que es la que contiene mi formulario. Los datos me los arroja con el id y no el nombre. Quisiera que me ayudaras. Realice los pasos que muestras.
Me sirvió muy bien lo que explicarte… solo que al final en el editor de qódigos
Private Sub Cuadro_combinado0_AfterUpdate()
Me.Cuadro_combinado2.Requery
End Sub
esto no me funcionó pero lo que hice fue insertar un macro que actualizara y ese si me funcionó… jejeje… no se si con eeso es que hice esta bien o me dará problema en el futuro.
Buenos días. Primero darte las gracias por tus explicaciones.
He seguido tus pasos y me han funcionado perfectamente cuando veo el formulario, pero el problema es que he creado un Formulario de Navegación para que me haga de menus y dentro en una de las opciones he colocado mi formulario con los campos en cascada. El problema es que ahora ya no funciona, al entrar al formulario me sale una ventana emergente que me solicita que introduzca el valor de Formularios!Producto!Categoria.
¿No se puede utilizar dentro de un formulario de navegación? ¿Hay que modificar en la select del campo combinado 2 para que lo coja de otro sitio?
Muchas gracias.
Hola, Quisiera saber si en un cuadro combinado hay alguna forma para evitar que se muestren espacios en blanco al momento de seleccionar la lista. Gracias.
Pd. Tengo Access 2013
Hola gracias por la ayuda pero ami no me sale, me es muy lioso ya desde el inicio los nombres de los cuadros «Cuadro_combinado0, Cuadro_combinado2» seria de ayuda que los nombres de los cuadros hicieran referencia a lo que van a mostrar por ejemplo Cuadro_articulos, Cuadro_categorias, ¿Porque necesitas dos tablas? la tabla Categorías tiene valores duplicados esos valores ya están en la tabla Artículos, entiendo que es para que no salgan valores duplicados, convendría aclararlo.
Otra duda es porque necesitamos el campo IdArticulos y IdCategorias, en el Cuadro Categorías solo necesitamos los valores que están en la columna Categorías, y el Cuadro Artículos necesitamos campo Categoría que el que nos va a filtrar los Artículos y lo hacemos invisible 0cm (corrígeme si me equivoco por favor)
Después de probar de todo no consigo que me muestre valores el segundo cuadro me lo muestra en blanco, Gracias por el tutorial aunque no haya sido capaz de lograrlo un saludo.
Saludos a todos.
Tengo Office 2013 y seguí los pasos tal y como están, cuando hago la consulta me manda el mensaje de que datos deseo mostrar los tecleo y me salen, pero cuando lo hago por medio el formulario principal no me muestra nada,en la parte de abajo me dice»calculando…» me supongo que si esta haciendo la consulta, pero no me la esta mostrando en pantalla, que hago ?
Hola otra vez. Tengo el siguiente inconveniente:
-Tengo una tabla Marcas con un c clave autonumérico y otro campo Nombre
-Una tabla Productos con un campo enlazado como cuadro combinado al campo clave de la tabla Marcas, pero ocultando este y mostrando solo el campo Nombre
– Un formulario (de búsqueda) con un Cuadro de Lista cuyo origen de datos son algunos campos de la tabla Productos, incluyendo el enlazado a la tabla Marcas. El problema es que se muestra el valor del campo clave (autonumérico) en lugar del valor del campo Nombre, lo cual es nada práctico. ¿Hay alguna manera de revertir esto haciendo que se muesrte el nombre de la marca en lugar del código??
Gracias
Muy buen tutorial. Me resolvió justo lo que quería.
Gracias
Hola…excelente tutorial, pero cómo hacer para 3 o más cuadros combinados? Del tipo: el último depende del anterior y así hasta el primero? Te doy un ejemplo como este que pusiste: En vez de tener solo 2 niveles (Artículo y Categoría) tendría 4 -> Artículo, Categoría, Sección (Informática, Vestuario, Alimentación, etc) y Tienda (Centro, Filial 1, Filial 2, etc).
¿Cómo podríamos hacer?
Agradezco mucho tu contestación, ya que dependo de tu respuesta….
Igual que con dos, solo hay que seguir anidando cuadros.
Simplemente excelente. Muchas gracias
hola buen día
realice el ejemplo de «Cuadros combinados en cascada» y el resultado es el mejor … pero requiero de tu ayuda, ya que en el informe solo me arroja los códigos de «IdArticulo» y «IdCategoria», y no los nombres como «Monitor Sansung 22″» y «Monitores».
que debo hacer para que en el informe me aparezcan el texto y los los ID.
muchas gracias por tu tutorial
Hola!!! gracias por la ayuda que das a todos.
Mi problema es que tengo un formulario de ingreso de datos a una tabla con cuatro combinaciones de cuadros combinados de a dos, es decir cuatro pares de cuadros combinados en cascada. Los datos me los muestra perfectamente, pero cuando paso a próximo registro se me borran los datos que ingresé en el anterior, no en la tabla sino en los cuadros combinados. Gracias por tu ayuda
Me ha costado pero lo he conseguido.
No sabes cuánto te lo agradezco porque llevaba intentándolo mucho tiempo.
Muchas gracias.
excelente tu ayuda, hace comprender muchas cosas que tratamos de hacer sin conseguirlo, pero con tus enseñanzas nos queda muy claro, ahora bien con una consulta, tengo dos cuadros combinados, ccb1 y ccb2, que utilizan la misma tabla, que tendria que cambiar de tu codigo vba para que pueda ser utilizado con mi tabla?
Buenos días, me sirvió muy bien el tutorial, esta bastante claro, aunque supongo que en algún punto hice algo mal ya que cuando elijo una de las opciones que me despliega mi segundo cuadro combinado y quiero cambiar de esta selección a otra, no me lo permite, intentare ser un poco más especifico, tengo dos tablas, la primera contiene el nombre de los estados de la republica y la segunda contiene el nombre de las delegaciones; si por ejemplo selecciono Aguascalientes en el cuadro combinado 1, el cuadro combinado 2 me despliega las subdelegaciones Aguascalientes Norte y Aguascalientes Sur, una vez que yo selecciono Aguascalientes Norte y deseo cambiar mi selección a Aguascalientes Sur en automatico me regresa a Aguascalientes Norte. Habrá alguna solución para esto??
Gracias! Solucioné mi problema con las fechas de viaje mostradas en un Aeropuerto, de acuerdo con el destino de viaje.
Me ha sacado de un atoyadero, gracias, muy ilustrativo
Hola.
Muy interesante y sencillo, pero tengo un problema. Copio punto por punto el ejemplo que nos ha dado y no refresca si no le doy a F5. Al Crear las tablas he dado a IdArticulo y a Idcategoria como Texto de long. 5 (el IdArticulo la 1ª vez fue autonumerico) y campos clave y he hecho la relación entre ambas tablas, de 1:N pero al probar el formulario solo funciona la 1ª vez, el resto siempre saca al C.Comb. Artículos los correspondientes a la 1ª categoría seleccionada. Solo se actualiza al pulsar F5. He probado varios eventos, incluso haciendo Requery a cada campo y nada. Le agradecería una solución al problema que, a mi entender, es que el evento no se activa.
Muchas gracias
Sencillo y Genial!
Tengo una cuestión: Si en tu ejemplo, algún Artículo no está vinculado a una Categoría, porque este campo está vacío en la tabla, no aparece en el listado. ¿podrían aparecer cuando se selecciona una Categoría, además de los artículos que le pertenecen, también aquellos articulos sin categoría?
Gracias
Genial! muchas gracias!
Hola, tengo un problema, al finalizar el proceso cuando selecciono una categoría me sale un cuadro que dice «digite el parametro» y si ahí escribo la categoria que acabo de seleccionar si me despliega los articulos. Pero como hago para que los articulos salgan inmediatamente despues de seleccionar la categoria ?
Hola, realizo todo el proceso pero resulta que el valor numérico del primer combo box lo graba de forma numérica en la tabla y a mi me gustaría que grabara el texto. ¿Eso es posible?
¡Gracias!
Q tal, es un gusto saludarte y agradecerte x los aportes, atte: aplata desde la CDMX
Gracias por tu tutorial. Está muy bueno, seguí los pasos tal y como se describen, pero no me actualizo el listado de artículo. Que puedo hacer o donde tendré mi error?
Excelente.
Gracias
Excelente explicacion, excelente detalle, gracias por compartir tus conocimientos…
Gracias.
Muy bueno….como seria para 3 cuadros combinados….intento y nada
Buen dia, me funciono. el unico detalle que me gustaria resolver es que al recorrer los registros en el formulario la informacion de esos campo no se visualiza. que hacer para solucionar esto???
Ángel, me has alegrado El día, qué digo el día: LA SEMANA, no había forma de que esto funcionara.
POR FIN UN EJEMPLO QUE FUNCIONA
GRACIAS
Excelente tutorial, me funciono a la perfeccion muchas felicidades. Desde Tijuana B.C. Mexico, Saludos,,
Aplique lo de los cuadros combinados para vinvcular Autonomías con provincias de forma que solo salen las provincias de esa autonomia pero cuando con el mismo sistema vinculo provincias con municipios este tercer nivel no me funciona.
Excelente y muy bien explicado. Funcionó perfecto. Era lo que necesitaba. Muchas gracias por compartir tus conocimientos.