Microsoft Access – Filtrar formulario usando VBA – Filtrando Fechas

Si seguiste el tutorial anterior Filtrar formulario usando VBA – Filtrando Números donde te mostraba como filtrar un subformulario a través de un campo tipo numérico ahora es el momento de aprender a filtrar un campo tipo fechas.

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.

Access-Filtrando-Fechas

En este tercer tutorial nos vamos a centrar solamente en el filtro por la fecha de calificación de la película, el cual es un campo tipo “Date”. Como puedes comprobar en el ejemplo he desactivado los campos Título, Distribuidora y Calificación que usamos en el ejemplo anterior para centrarnos solo en el filtro fecha. El motivo es enseñarte a utilizar los distintos tipos de filtros y, una vez sepamos hacerlos todos, buscaremos la forma de poder combinarlos lo que hará de nuestro formulario una herramienta muy potente.

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:

  • Filter
  • FilterOn

Con la propiedad Filter especificamos el filtro concreto que queremos utilizar, por ejemplo “que la fecha de calificación esté comprendida entre el 01/01/2000 y 31/12/2005”

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.

Recordemos antes de nada como debemos filtrar un campo tipo fecha.

  1. Si lo que pretendemos es filtrar una sola fecha, que no es el caso de este ejemplo, usaríamos la siguiente expresión:
    • FechaCalificacion = #01/01/2000#
  2. Si pretendemos filtrar un intervalo de fechas usaríamos el parámetro “Between” que significa “entre”:
    • FechaCalificacion BETWEEN #01/01/2000# AND #31/12/2005#

Debemos de tener claro un punto importante, las fechas hay que encerrarlas entre almohadillas “#”

Sigamos desgranando el ejemplo, lo primero que haremos será crear una variable para guardar en ella el filtro:

Y ahora guardamos en ella el filtro:

Como puedes comprobar, si has seguido los otros dos tutoriales, el filtro es una cadena de texto que debe ir encerrada entre comillas dobles pero, entre medio, estamos haciendo referencia a dos cuadros de texto de nuestro formulario y por ello es necesario cortar la cadena de texto usando el símbolo “&” para especificar los cuadros de texto donde tendremos las fechas “txtFechaInicio” y “txtFechaFin”

Con las fechas, tenemos otro problema importante, más aun, importantísimo que nos puede dar al traste con todo el filtro. En los cuadros de texto la fecha está escrita en formato español, o sea, primero el día, luego el mes y por último el año y así es como se lo pasamos por código VBA para que filtre pero, caprichos de Microsoft, el código VBA solo entiende el inglés, y las fechas al filtrar las interpreta en formato americano, o sea, primero mes, luego día y por último el año, con lo cual, si dejamos el código tal y como está no filtrará correctamente nuestros registros. Para ello es necesario convertir la fecha al formato americano usando la función “Format”. Esta función es muy versátil para convertir entre distintos tipos de formatos aunque en este tutorial voy a explicarla solo en el caso que nos atañe y su uso es así:

Usando la función “Format”

Como puedes observar, estamos especificando en qué orden queremos que use la fecha, primero el mes “mm”, luego el día “dd” y por último el año “yyyy”.

Vamos a completar la cadena de texto del filtro incluyendo la función “Format”

Ya tenemos el filtro asignado a nuestra variable sFiltro, ahora solo nos queda especificar a Access que asigne esa variable al subformulario y a continuación que lo filtre activándole el filtro. El código completo del botón buscar será este:

Escribiendo el código de nuestro Botón:

Como toque final debemos desactivar el filtro con el botón “Mostrar Todos” y nada más simple como poner el filtro del subformulario en blanco, luego desactivar el filtro y si somos muy perfeccionistas, limpiar los cuadros de texto para que el usuario pueda realizar una nueva búsqueda.

En la próxima entrega combinaremos los filtros de texto, número y fechas para que el formulario sea capaz de filtrar por todas ellas a la vez.

Referencias

Descárgate el ejemplo.

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

Si quieres saber más

Curso Avanzado de Microsoft Access con VBA

Página oficial de Microsoft Office

Estudió formación profesional en la rama de electrónica hasta que descubrió el apasionante mundo de los ordenadores personales. Desde entonces, la administración de bases de datos, hojas de cálculo y programación en Microsoft Visual Basic para aplicaciones le han acompañado hasta el día de hoy. En estos momentos, su principal interés está enfocado a portabilizar las bases de datos a dispositivos móviles Windows e IOS, en entornos cliente servidor, enfocado en desarrollos con Microsoft Access, FileMaker y Servidores en la nube como Microsoft SQL Azure.

2 Comments

  1. Responder Juan

    Está genial la verdad y para iniciados como yo es la leche, a mi me salta un error continuamente al presionar el botón, .BusquedaSubFormulario => “no se encontró el método o dato miembro”. Me puedes echar un cable? Graciassssssssssssssss

  2. Responder Andres Gutierrez

    Muchas gracias, la verdad es que este tutorial me ha servido al 100%, sigan asi ayudando a los que se inicial al uso del VBA para Access…

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR