Si tienes un formulario continuo con muchos registros en Microsoft Access, lo más seguro es que te interese filtrar por múltiples campos a la hora de localizar registros que cumplan un determinado criterio. Esto es justamente lo que vamos a ver hoy. ¡Empecemos!
Lo primero que he hecho es crear una tabla y montar un formulario continuo asociado a la misma,
Como véis, tenemos la posibilidad de filtrar por los campos: Fecha, Importado, Pais, Precio y Departamento, pero no solo de forma individual, si no también de forma simultánea.
Existen cuatro botones,
-
- Filtro: Realiza el filtrado de registros del formulario continuo en base a los criterios seleccionados.
- Borrar: Restablece el filtro y borrar los campos del mismo.
- Informe: Muestra un informe con la selección de registros actual.
- Salir: Cierra la base de datos.
A continuación, os dejo el código que les acompaña,
Private Sub cmdFiltro_Click()
'Definimos las variables
Dim vPais As String
Dim vPrecio As Currency
Dim vImportado As Variant
Dim vDepartamento As String
Dim vFecha As Variant
Dim vLargo As Integer
Dim miFiltro As String
'Guardamos en las variables la información que se haya rellenado en cada filtro
vPais = Nz(Me.cboPais.Value, "")
vPrecio = Nz(Me.cboPrecio.Value, 0)
vImportado = Nz(Me.chkImportado.Value, "")
vDepartamento = Nz(Me.cboDepartamento.Value, "")
vFecha = Nz(Me.txtFecha.Value, "")
'Inicializamos la variable mifiltro que será la que guarde la combinación de todos los filtros rellenos
miFiltro = ""
'Añadimos al filtro el pais seleccionado
If vPais <> "" Then
miFiltro = "AND [Pais]='" & vPais & "'"
End If
'Añadimos al filtro el precio seleccionado
If vPrecio <> 0 Then
miFiltro = miFiltro & " AND [Precio]=" & vPrecio
End If
'Añadimos al filtro la opción importado seleccionada
If vImportado <> "" Then
miFiltro = miFiltro & " AND [Importado]=" & vImportado
End If
'Añadimos al filtro el departamento seleccionado
If vDepartamento <> "" Then
miFiltro = miFiltro & " AND [Departamento]='" & vDepartamento & "'"
End If
'Añadimos al filtro la fecha seleccionada
If vFecha <> "" Then
miFiltro = miFiltro & " AND [FechCompra]=#" & Format(vFecha, "mm/dd/yyyy") & "#"
End If
'Calculamos la longitud del filtro creado
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 cmdBorrar_Click()
'Deshacemos el filtro y borramos todos los campos del mismo
With Me
.cboPais.Value = Null
.cboDepartamento.Value = Null
.chkImportado.Value = Null
.cboPrecio.Value = Null
.txtFecha.Value = Null
.FilterOn = False
End With
Me.Filter = ""
End Sub
Private Sub cmdInforme_Click()
'Abrimos el informe con los registros filtrados
DoCmd.OpenReport "Informe", acPreview, , Me.Filter
End Sub
Private Sub cmdSalir_Click()
'Cerramos la base de datos
DoCmd.Quit
End Sub
El funcionamiento de la primera macro es muy sencillo. Recorre los campos del filtro buscando cuáles de ellos han sido rellenados y en caso afirmativo, va añadiendo en la variable mifiltro dicha información. Al final del proceso esta variable contendrá el criterio que usará el filtro al ejecutarse el comando Me.FilterON=True.
En el ejemplo, si filtramos los artículos comprados el día 21/08/2022 e importados de China, obtendremos el siguiente resultado,
Si queremos elaborar un informe con dicha información, no tenemos más que pulsar sobre el botón correspondiente,
Si ahora pulsamos el botón Borrar, deshacemos el filtro y se limpian los campos del mismo,
Espero que hayas aprendido a filtrar un formulario usando múltiples campos, y a partir de ahora complementes tus formularios continuos con esta maravillosa herramienta.
Por último, invitarte a compartir tus dudas en los comentarios o en el foro, y a darle clic a la publicidad de abajo para ayudarme a seguir creando contenido.
Hasta la próxima.
Descarga el archivo del ejemplo
Por favor, haz clic en el anuncio y ayúdame a seguir creando contenido. Solo te lleva un segundo 😉
2 Comentarios
Enviar un comentario
Últimas publicaciones
Ejemplo muy útil y buenos recursos en tu página
Gracias,
Gracias Juan,
Agradezco mucho este tipo de comentarios. Por aquí ando para lo que necesites.
Saludos.