Problemas con fechas en Access (en ingles)

a todos/as.

Tengo un problema con las fechas de una tabla a la hora de realizar una consulta.

Para empezar decir que tengo el Access en ingles y que hasta ahora no me habia dado ningún problema de este tipo.

Tengo definida una tabla de carga de horas donde hay un campo fecha. Este campo lo tengo definido exactamente como Date/Time y en format Short Date.

Cuando guardo algun registro ya sea directamente en la tabla o a través de un formulario, me coge el formato de fecha español, por ejemplo 09/03/2023.

Al realizar una consulta mediante código VBA, creo una variable llamada fecha donde guardo el valor de la fecha actual:

Dim fecha As Date

fecha=Date

consulta = "SELECT * FROM cargaHoras WHERE idUsuario=" & idUser & " AND fecha=#" & fecha & "#"

Bien, pues resulta que si filtro por la fecha en formato español no me devuelve nada, pero si le meto a cascoporro el formato ingles de fecha si me filtra.

Por tanto tengo un problema de concordancia entre el formato que me está guardando en la variable fecha la función Date y el valor que necesita la consulta para filtrar.

¿Alguien sabe porque puede ser esta discrepancia?

2 Respuestas

Respuesta
1

Pruebe con

consulta = "SELECT * FROM cargaHoras WHERE idUsuario=" & idUser & " AND fecha=#" &Format( fecha,"mm/dd/yyyy") & "#"

Respuesta

La discrepancia esta en que esos datos los analiza el motor de Access y espera los únicos formatos que entiende.

Si el dato fuese en origen una fecha no habría problemas, pero si el dato es un texto que representa a una fecha .. lo adecuado seria convertirlo a fecha (la función CDate lo hace) o darle el formato americano con (por ejemplo) la función Format que toma el texto al que supone fecha en formato local y la devuelve (también en texto) en otro formato (el que necesita es el americano).

Las fechas son números, por lo que si en lugar de una fecha (digamos que el uno de enero de 2023) le damos su equivalente numérico (44927) lo admitirá sin problemas.

Por cierto, solo se utiliza el marcador de tipo fecha (#) cuando se le pasa un texto como fecha, si se le pasa un dato que es Fecha-Access en principio le sobran (verifícalo en tu ejemplo)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas