Generar filtro de fecha en access vba

Expertos sucede que tengo una consulta que me trae diferente información de acuerdo a una fecha inicial y una fecha final que diligencio manualmente, sin embargo no se que sucede cuando ejecuta la consulta si el día es menor a 12 entonces lo reemplaza por el mes como lo describo a continuación.

Consulta original: fecha inicial 08/09/2015 Fecha final 09/10/2015

Consulta modificada: Fecha Inicial 09/08/2015 Fecha Final 10/09/2015

No se por que sucede esto, sin embargo me preocupa pues un mes es un largo periodo de tiempo y los informes saldrían mal. Me gustaría saber por que sucede o como solucionarlo de antemano muchas gracias.

Los campos contienen el mismo tipo de dato "Fecha Corta", y el mismo formato "dd/mm/yy"

2 respuestas

Respuesta
2

Si el filtro los haces en una consulta SQL dentro de VBA, tienes que cambiarle el formato a las fechas para que queden con el formato americano. Esto lo puedes hacer con la función Format(), por ejemplo:

miSQL="SELECT * FROM Tabla WHERE Fecha>=#" & Format(Me.txtFecha,"mm/dd/yyyy") & "#"

Hola..

Gracias por tu pronta respuesta, sin embargo lo realizo cuando corro paso a paso el procedimiento la consulta parece estar bien sin embargo cuando miro la consulta esta no es la esperada.

Gracias por tu comentario.

SQL, como casi todos los lenguajes de programación están hechos en inglés (inglés americano), por lo que las fechas las entienden con el formato americano aunque tengas una configuración regional diferente.

Si bien al trabajar con fechas en VBA no te hace falta formatearlas, si creas una SQL con VBA sí es necesario para que no se haga líos como te pasa.

Puedes comprobar si la consulta está bien o no poniendo un Debug. Print miSQL despues de crear la consulta SQL por VBA. Verás, en la ventana Inmediato la SQL completa con los parámetros de fecha que está cogiendo.

Yo siempre uso ese formateo de fechas y nunca me dio problemas, pero hace unos meses, a otro usuario, este sistema no le funcionaba y tenía que poner este otro formato:

miSQL="SELECT * FROM Tabla WHERE Fecha>=#" & Format(Me.txtFecha,"dd/mm/yyyy") & "#"

Como por probar no pierdes nada, inténtalo así.

Respuesta
1

Revisa la configuración regional en el panel de control, puede ser que tengas un formato de fecha diferfente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas