Crear un filtro de búsqueda en la cabecera de un formulario continuo usando VBA

Escrito por Administrador

2 de diciembre de 2021

Hoy vamos a ver cómo crear un filtro de búsqueda en la cabecera de un formulario continuo usando VBA.

Como sabéis, en los formularios continuos, se muestran todos los registros de una tabla, por lo que, a veces, es necesario poder filtrarlos para visualizar sólo la información necesaria.

En el ejemplo (adjunto al final del post) encontraréis dos tablas y un formulario.

Las tablas "Clientes" y "Expedientes", se encuentran relacionadas entre sí a través del campo "DNI". Es decir, un expediente está asociado a un DNI de un cliente.

bloquear-access-fecha
bloquear-access-fecha

El formulario "Lista de expedientes", muestra todos los registros de la tabla "Expedientes" con información relacionada de la tabla "Clientes".

Si te fijas, en la cabecera del formulario hay dos desplegables en los campos "Prioridad" y "Estado", que usaremos para seleccionar entre las distintas opciones de cada uno de ellos.

Vamos a usar VBA para que solo se muestren los registros que cumplan lo seleccionado en uno o en ambos desplegables.

bloquear-access-fecha

A continuación, os muestro el código a introducir en cada desplegable,

Private Sub Prioridadfiltro_AfterUpdate()

Dim vPrioridad As String
Dim vEstado As String

Dim vLargo As Integer
Dim miFiltro As String

'Cogemos los valores que hayamos seleccionado como filtro

vPrioridad = Nz(Me.Prioridadfiltro.Value, "")
vEstado = Nz(Me.Estadofiltro.Value, "")

'Inicilizamos el filtro

miFiltro = ""

'Creamos la primera parte del filtro

If vPrioridad <> "" Then
miFiltro = miFiltro & " AND [Prioridad]='" & vPrioridad & "'"
End If

'Creamos la segunda parte del filtro

If vEstado <> "" Then
miFiltro = miFiltro & " AND [Estado]='" & vEstado & "'"
End If

'Ahora cogemos la longitud del filtro

vLargo = Len(miFiltro)

'Recomponemos el filtro eliminando el primer 'AND '

If vLargo > 0 Then
miFiltro = Right(miFiltro, vLargo - 4)
End If

'Aplicamos el filtro al formulario

Me.Filter = miFiltro
Me.FilterOn = True

End Sub

Private Sub Estadofiltro_AfterUpdate()

Dim vPrioridad As String
Dim vEstado As String

Dim vLargo As Integer
Dim miFiltro As String

'Cogemos los valores que hayamos seleccionado como filtro

vPrioridad = Nz(Me.Prioridadfiltro.Value, "")
vEstado = Nz(Me.Estadofiltro.Value, "")

'Inicilizamos el filtro

miFiltro = ""

'Creamos la primera parte del filtro

If vPrioridad <> "" Then
miFiltro = miFiltro & " AND [Prioridad]='" & vPrioridad & "'"
End If

'Creamos la segunda parte del filtro

If vEstado <> "" Then
miFiltro = miFiltro & " AND [Estado]='" & vEstado & "'"
End If

'Ahora cogemos la longitud del filtro

vLargo = Len(miFiltro)

'Recomponemos el filtro eliminando el primer 'AND '

If vLargo > 0 Then
miFiltro = Right(miFiltro, vLargo - 4)
End If

'Aplicamos el filtro al formulario

Me.Filter = miFiltro
Me.FilterOn = True

End Sub

En primer lugar, el código guarda en variables el contenido de los campos desplegables.

A continuación, comprueba que los desplegables no estén vacíos y, en ese caso, va introduciendo en la variable miFiltro el contenido de los mismos.

Finalmente, aplica el filtro al formulario continuo, manteniéndose solo aquellos registros que cumplen con lo seleccionado.

Continuamos con el ejemplo, y vemos el funcionamiento del filtro de cabecera del formulario. No obstante, si tienes cualquier tipo de duda, déjala en los comentarios, y la contestaré tan pronto como pueda.

Por ejemplo, si seleccionamos en el desplegable "Prioridad" la opción Normal, vemos cómo desaparece el registro de prioridad alta.

bloquear-access-fecha

Además, vamos a seleccionar en el campo "Estado" la opción Finalizada, con lo que sólo nos quedarán dos registros.

Éstos, cumplen las dos selecciones realizadas; Prioridad normal y estado finalizado.

bloquear-access-fecha

Espero que hayas aprendido con este ejemplo cómo crear un filtro de búsqueda en la cabecera de un formulario continuo 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

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.

Últimas publicaciones

Categorías

diciembre 2024
LMXJVSD
 1
2345678
9101112131415
16171819202122
23242526272829
3031 

Debates en el foro

Contacto