Access, Excel, VBA y más

Microsoft Access – Filtrar formulario usando VBA – Uniéndolo todo

Si seguiste el tutorial anterior “Filtrar formulario usando VBA” donde te mostraba como filtrar un subformulario a través de un campo tipo fecha ahora es el momento de terminar nuestro tutorial combinando todo lo amprendido en los tres anteriores y haciendo, de nuestro formulario de búsqueda, una herramienta muy potente.

Seguiré utilizando la base de datos del ejemplo anterior. Es una base de datos de películas con sus calificaciones, según el ministerio de educación y cultura de España que es de donde he descargado la base de datos con cerca de 77.000 registros lo que además nos viene bien para comprobar el poder de Microsoft Access trabajando con bases de datos extensas.

La idea es sencilla, tenemos un formulario principal que no está vinculado a ninguna tabla y sobre este, un subformulario vinculado a la tabla “Películas”, que muestra todos los registros. A través del formulario principal escribiremos los distintos filtros, pudiendo combinarlos, y pulsando el botón “Buscar” nos localizará la película que estemos buscando de entre todas las disponibles en la base de datos.

En este último tutorial vamos a combinar los filtros por texto, numéricos y de fechas, aplicando entre ellos, solo en caso de tener datos para filtrar, el operador “AND”. La idea es leer, uno por uno, los cuadros de texto e ir componiendo un solo filtro, combinación de todos.

Hay que prestar especial atención al filtro por fecha en el que hemos ampliado su funcionalidad. Tal y como lo diseñamos en el tutorial anterior tenía el inconveniente de que, para usarlo, había que itroducir obligatoriamente la fecha de inicio y la fecha fin, en caso de faltar uno de los dos datos era imposible filtrar entre fechas. Para solventar ese inconveniente nos hemos apoyado de la función “NZ” que nos permite utilizar un valor alternativo en caso de que el que necesitamos sea nulo. Su uso es muy sencillo:

Nz(“Usa este dato”, “Pero si es nulo usa este otro”)

No tiene más, así que aprovechándonos de su peculiaridad le hemos dicho a Access algo como:

NZ(“FechaInicio”,”Si  no hay, pones el 01/01/1900”)

Evaluamos la fecha inicio y si el usuario no la ha puesto directament usamos la fecha mas baja que nos deja utilizar Access, que por defecto en el 01/01/1900

Con la fecha fin hacemos lo mismo:

NZ(“FechaFin”,”Si  no hay, pones el 31/12/9999”)

En este caso, si no se ha especificado la fecha fin le decimos que utilice la fecha mas alta que admite Access, por tanto  en el peor de los casos, si no se introduce ninguna de las dos fechas, nuestro código filtrará desde el 01/01/1900 hasta el 31/12/9999 o sea, que nos mostrará todos los registros.

Si se especifica solo la fecha fin y se deja en blanco la fecha inicio, filtraríamos desde el 01/01/1900 hasta la fecha fin especificada. Nos estamos asegurando que siempre filtre. ¿Sencilla la solución, verdad?

Para no transcribir el código entero te recomiendo que te descargues el ejemplo ya que he comentado línea por línea todo el código para que puedas entender su funcionamiento.

Como aplicar el filtro al formulario

Los formularios en Access tienen dos propiedades que son las que vamos a modificar mediante código VBA y son:

Con la propiedad Filter especificamos el filtro concreto que queremos utilizar, por ejemplo “Que el título contenga el texto Batman y que la fecha de calificación esté comprendida entre el 01/01/2000 y 31/12/2005”, como ves, ahora podemos combinar mas de un filtro.

Y con la propiedad FilterOn le diremos que aplique ese filtro.

Esas dos propiedades las vamos a configurar en el evento “Click” del botón “Buscar” situado en el formulario principal.

Hasta aquí el tutorial de cuatro capítulos sobre los filtros en formularios. A través de ellos hemos aprendido a filtrar texto, números y fechas.

He de recordar que cualquiera de estos filtros se pueden aplicar pulsando con el botón derecho del ratón sobre cualquiera de las columnas del subformulario pero nuestra finalidad es diseñar una aplicación con una estética cuidada y la sencillez absoluta para un usuario que, en la mayoría de los casos, no será un experto en Access.

Referencias

Descarga el archivo de ejemplo

Listado de películas del ministerio de Educación y Cultura

Si quieres saber más

Curso de iniciación a Microsoft Access

Curso Avanzado de Microsoft Access con VBA

 

Desarrollador de software para pequeña y mediana empresa con más de veinte años de experiencia.

Salir de la versión móvil