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.
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".
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,
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.
Aquí tienes el resultado.
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.
Espero que con este ejemplo, hayas aprendido a filtrar un subformulario usando un campo combinado (desplegable) usando VBA.
Por último, quiero invitarte a compartir tus dudas en los comentarios o en el foro. Intentaré ayudarte en todo lo que pueda, y así aprenderemos todos.
Hasta la próxima.
Si te ha servido y quieres donar
Descarga el archivo del ejemplo
Últimas publicaciones
0 comentarios