Mostramos un ejemplo del uso de filtros en consultas en base de datos Microsoft Access, usando las funciones SiIm(), EsNulo() y Ahora().

Requisitos para hacer consultas en Access

Necesitaremos disponer de Microsoft Access en la versión correspondiente. En el caso de este artículo la consulta fue realizada en una MDB/ACCDB de Acsess versión 2010. El filtro ha sido probado en la versión 2003 y también funciona perfectamente.

Escenario de trabajo, ejemplo de uso del filtro en consulta Access

Supongamos que tenemos una tabla con las bajas de los usuarios de una empresa. Dicha tabla tiene, entre otros campos, la fecha de inicio de la baja (fechabaja) y la fecha de alta, fecha fin de la baja (fechaalta).

Supongamos que nos piden sacar el número de días que un usuario ha estado de baja (restando la fechaalta menos la fechabaja). Pero el problema surge cuando un usuario todavía está de baja (aún no tiene fecha de alta). En ese caso si únicamente hacemos una resta de la fecha de alta menos la baja no nos devolverá los datos correctamente porque no hay fecha de alta.

A continuación explicamos cómo solucionar este problema en filtros de consultas de Access.

Añadir consulta sobre una tabla en Access con filtros condicionales

En primer lugar crearemos la consulta en Access, para ello accederemos a la base de datos (mdb, accdb), pulsaremos en el grupo «Crear» y en «Asistente para consultas»:

Añadir consulta sobre una tabla en Access con filtros condicionales

Seleccionaremos «Asistente para consultas sencillas» y pulsaremos «Aceptar»:

Añadir consulta sobre una tabla en Access con filtros condicionales

Elegiremos la tabla origen de los datos (en nuestro caso «baja«) y los campos que queramos mostrar en la consulta (en nuestro caso todos):

Añadir consulta sobre una tabla en Access con filtros condicionales

Elegiremos «Detalle (muestra cada campo de cada registro)» y pulsaremos «Siguiente»:

Añadir consulta sobre una tabla en Access con filtros condicionales

Introduciremos el nombre para la nueva consulta que se creará, en nuestro caso «ct_baja_dias» y marcaremos la opción «Modificar el diseño de consulta». Pulsaremos en «Finalizar»:

Añadir consulta sobre una tabla en Access con filtros condicionales

Añadiremos una nueva columna a la consulta, para ello pulsaremos en «Insertar columnas» en el grupo «Diseño» de la barra de botones (también se puede insertar una columna en la consulta seleccionando la última columna y pulsando la tecla Insertar del teclado):

Añadir consulta sobre una tabla en Access con filtros condicionales

Y agregaremos la siguiente función en el «Campo» de la columna:

NumeroDias: DifFecha(«d»;[fechabaja];SiInm(EsNulo([fechaalta]);Ahora();[fechaalta]))

Añadir consulta sobre una tabla en Access con filtros condicionales

Vamos a analizar la función parte a parte:

  • En primer lugar, usamos la función principal DifFecha(), que obtiene el número de días (indicado por el parámetro «d») entre dos fechas dadas, restándolas.
  • La primera fecha que le pasamos es fechabaja, y en la segunda fecha usamos otra función, EsNulo(), que comprueba si un campo tiene valor nulo (vacío), en cuyo caso insertamos la fecha del día actual con la función Ahora().

El campo anterior NumeroDias, los días entre las fechas fechabaja y fechaalta, restándolas. Y cuando fechaalta sea nulo cambiará fechaalta por el día actual.

Si ejecutamos la consulta mostrará el resultado de aplicar estas funciones en el campo NumeroDias:

Añadir consulta sobre una tabla en Access con filtros condicionales

Y vemos que cuando el campo FechaAlta (FAlta) es nulo el NumeroDias sigue mostrándose correctamente, cambiando ese nulo por la fecha actual y restándola a FechaBaja (FBaja).