Filtrar un subformulario usando un campo combinado (desplegable) con VBA

filtrar-subformulario-vba

Escrito por Administrador

17 de noviembre de 2021

En este post, vamos a aprender a filtrar un subformulario usando un campo combinado (desplegable) con VBA.

Así, podremos ir buceando entre los distintos combos que tengamos y, mostrar en el listado únicamente los elementos que cumplan dicha selección.

Con objeto de ver todo esto más claro, he creado un archivo de ejemplo que adjunto al final del post. Se trata de la base de datos de un concesionario, en la que se incluyen distintos modelos de coches y motos clasificados por tipo de vehículo y marca.

Para ello, tenemos tres tablas: "Vehiculos" con los tipos de vehículos disponibles, "Marcas" con las marcas por cada tipo de vehículo y "Articulos" con los artículos para cada tipo de vehículo y marca.

bloquear-access-fecha
bloquear-access-fecha
bloquear-access-fecha

Además, vamos a usar el formulario "Consulta" para realizar el filtrado de datos, que serán mostrados en el subformulario "Sub_Consulta", con los campos "Descripción" y "Cantidad".

bloquear-access-fecha

Cuando seleccionamos un tipo de vehículo en el primer desplegable, automáticamente, el segundo desplegable solo nos va a dar la opción de seleccionar las marcas de ese tipo de vehículo elegido.

Esto es muy fácil de hacer. no es necesario ningún tipo de código.

A continuación, te explico cómo, aunque de manera breve porque no es el objeto de este post.

Lo primero que tienes que hacer es seleccionar el campo "Vehiculo" en la vista diseño, y en la pestaña Datos de la hoja de propiedades, seleccionar Origen de la fila. Se abrirá una pantalla que habrá que configurar como aparece en la siguiente figura,

bloquear-access-fecha

Con esto, lo que hacemos es limitar los valores del desplegable, al contenido de la tabla "Vehiculos".

Repetimos la misma operación con el campos "Marca", pero esta vez, añadimos como condición, que filtre por el vehículo seleccionado en el primer desplegable.

bloquear-access-fecha

Aquí tienes el resultado.

bloquear-access-fecha
bloquear-access-fecha

Una vez seleccionada la marca, lo siguiente sería mostrar los datos que cumplen ambos criterios en el subformulario.

Para ello, hemos añadido el siguiente código,

Private Sub Marca_AfterUpdate()

'Filtramos el subformulario de Artículos por vehiculo y marca

Me.Sub_Consulta.Form.Filter = "vehiculo='" & Form!Vehiculo & "' and Marca = '" & Form!Marca & "'"

Me.Sub_Consulta.Form.FilterOn = True

End Sub

También, he incluido código después de actualizar el campo "Vehiculo", para borrar el campo "Marca" y limpiar el subformulario de datos.

Private Sub Vehiculo_AfterUpdate()

'Limpiamos el campo Marca

Me.Marca = Null
Me.Marca.Requery

'Limpiamos el subformulario de datos

Me.Sub_Consulta.Form.Filter = "Vehiculo = 'ninguno'"
Me.Sub_Consulta.Form.FilterOn = True

End Sub

A continuación, os dejo un par de imágenes con el resultado.

bloquear-access-fecha
bloquear-access-fecha

Espero que con este ejemplo, hayas aprendido a filtrar un subformulario usando un campo combinado (desplegable) usando VBA.

Hasta la próxima.

Descarga el archivo del ejemplo

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto