Access, Excel, VBA y más

Cuadros combinados en cascada

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

Tabla Categorias

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» :

Cuadro Combinado Artículos

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:

Pulsar para ir al generador de consultas

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.

Salir de la versión móvil