Búsqueda entre dos fechas en Access - VBA
Resuelto
DecK
-
DecK -
DecK -
Hola,
Estoy desarrollando actualmente una pequeña base de datos en Access.
He creado una tabla en SQL Server en la que tengo un campo FechaIntervención.
Cuando creo en Access una tabla vinculada a esta tabla, me recupera la fecha en el formato AAAA-MM-DD.
Por lo tanto, para mostrar la fecha en el formato deseado, utilizo una consulta en la que especifico en SQL: Formato([mi_tabla_vinculada].[FechaIntervención];'dd/mm/aaaa'). El campo se llama Expr1.
Hasta aquí todo bien (¡normalmente!).
Después he creado un formulario de búsqueda, en el que busco entre dos fechas (TxT_FechaInicio y TxT_FechaFin). Aquí está la sintaxis de mi "fórmula" (encontrada en internet, por cierto):
Private Sub Btn_Filtrar_Click()
f = ""
If Not IsNull(Me.TxT_FechaInicio) And Me.TxT_FechaInicio <> "" Then
f = "CLng([Expr1]) BETWEEN " & CLng(Me.TxT_FechaInicio) & " AND " & CLng(Me.TxT_FechaFin) & ""
End If
Me.Filtro = f
Me.FiltroActivado = True
End Sub
Mi problema es que cuando hago clic en el botón relacionado con este código, me muestra el código de error "3464: tipo de datos incompatible en la expresión del criterio"...
¡Gracias por adelantado por su ayuda!
Configuración: Windows 7 / Safari 535.19
Estoy desarrollando actualmente una pequeña base de datos en Access.
He creado una tabla en SQL Server en la que tengo un campo FechaIntervención.
Cuando creo en Access una tabla vinculada a esta tabla, me recupera la fecha en el formato AAAA-MM-DD.
Por lo tanto, para mostrar la fecha en el formato deseado, utilizo una consulta en la que especifico en SQL: Formato([mi_tabla_vinculada].[FechaIntervención];'dd/mm/aaaa'). El campo se llama Expr1.
Hasta aquí todo bien (¡normalmente!).
Después he creado un formulario de búsqueda, en el que busco entre dos fechas (TxT_FechaInicio y TxT_FechaFin). Aquí está la sintaxis de mi "fórmula" (encontrada en internet, por cierto):
Private Sub Btn_Filtrar_Click()
f = ""
If Not IsNull(Me.TxT_FechaInicio) And Me.TxT_FechaInicio <> "" Then
f = "CLng([Expr1]) BETWEEN " & CLng(Me.TxT_FechaInicio) & " AND " & CLng(Me.TxT_FechaFin) & ""
End If
Me.Filtro = f
Me.FiltroActivado = True
End Sub
Mi problema es que cuando hago clic en el botón relacionado con este código, me muestra el código de error "3464: tipo de datos incompatible en la expresión del criterio"...
¡Gracias por adelantado por su ayuda!
Configuración: Windows 7 / Safari 535.19
3 respuestas
¡Para información, he encontrado! Después de varios días de búsqueda.....
Cdate([Expr1]) BETWEEN #" & CDate(Me.TxT_DateDebut) & "# AND #" & CDate(Me.TxT_DateFin) & "#"
Aparentemente, no considera mis fechas como fechas.... ¡Ahora funciona!
Gracias a ustedes por sus ideas.
Cdate([Expr1]) BETWEEN #" & CDate(Me.TxT_DateDebut) & "# AND #" & CDate(Me.TxT_DateFin) & "#"
Aparentemente, no considera mis fechas como fechas.... ¡Ahora funciona!
Gracias a ustedes por sus ideas.
Hola,
Como es un texto esperado, ¿has intentado pasarle la fecha tal cual?
"17/03/2012" o "2012/03/17"
Y para convertir una fecha, datevalue(tu fecha en texto) también funciona bien.
Si no, en VBA de Excel, en algunos casos, para representar una fecha se encierra entre #, tal vez eso es lo que espera también: #17/03/2012#
eric
eric
Como es un texto esperado, ¿has intentado pasarle la fecha tal cual?
"17/03/2012" o "2012/03/17"
Y para convertir una fecha, datevalue(tu fecha en texto) también funciona bien.
Si no, en VBA de Excel, en algunos casos, para representar una fecha se encierra entre #, tal vez eso es lo que espera también: #17/03/2012#
eric
eric
Hola, gracias por tu respuesta.
Sin embargo, hay un nuevo error: 3075: Error de sintaxis en la fecha en la expresión "CLng([Expr1]) BETWEEN #40544# AND #40908"
Lo que es extraño es que en el mensaje de error falta el último signo de número, mientras que cuando (en modo de depuración) paso el cursor sobre mi variable "f" me muestra correctamente la fórmula: f="CLng([Expr1]) BETWEEN #40544# AND #40908#"
Sin embargo, hay un nuevo error: 3075: Error de sintaxis en la fecha en la expresión "CLng([Expr1]) BETWEEN #40544# AND #40908"
Lo que es extraño es que en el mensaje de error falta el último signo de número, mientras que cuando (en modo de depuración) paso el cursor sobre mi variable "f" me muestra correctamente la fórmula: f="CLng([Expr1]) BETWEEN #40544# AND #40908#"