Filtrar por fecha o rango de fechas en Access

Tengo un informe "unidadesDisponibles" que se basa en una consulta" horasbitacora"" donde a través de un formulario "filtro" lo abro y aplico el filtro necesario. En este formulario indico los filtros que veré en el informe. Sin embargo ahora requiero que me filtre ya sea una fecha especifica o bien un rango de fechas. Para ello agregue los cuadros de texto TxtFec, TxtFec1 y TxtTur. El problema ahora que solo me reconoce la primera fecha capturada y el turno. No me reconoce los datos capturados para el 2do cuadro donde pongo la otra fecha.

¿Cómo le hago para que me valide los dos cuadros de texto de las fechas y así poder filtrar ya sea una fecha o un rango de fechas?

Tengo Este código que anteriormente me pasaron :

Private Sub Report_Open(Cancel As Integer)
Dim Frm As Form
Dim FiltroDisp As String, FiltroFecha As String, FiltroTurno As String, FiltroInforme As String
Set Frm = Forms!FILTRO.Form
FiltroDisp = "DISPONIBLE = 'SI'"
FiltroFecha = "FSalida LIKE '*" & Frm.TxtFec & "*'"
FiltroTurno = "TurnoSalUnidad LIKE '*" & Frm.TxtTur & "*'"
FiltroInforme = FiltroDisp & " AND " & FiltroFecha & " AND " & FiltroTurno & " AND " & FiltroFecha1
Me.Filter = FiltroInforme
Me.FilterOn = True
Set Frm = Nothing
End Sub

3 Respuestas

Respuesta
1

Un poquito más de literatura sobre fechas (y algunas rutinas para simplificarnos la vida):

Fechas en VBA y SQL

Respuesta
3

Las fechas las tienes que trabajar como fechas, no como textos:

Si quieres filtrar, por ejemplo, fechas posteriores a la fecha del formulario:

FiltroFecha = "FSalida>#" & Frm.TxtFec & "#"

Para filtrar un rango de fechas:

FiltroFecha = "FSalida>#" & Frm.TxtFec & "# AND FSalida<#" & Frm.TxtFec1 & "#"

o mejor aún, usando BETWEEN:

FiltroFecha = "FSalida BETWEEN #" & Frm.TxtFec & "# AND #" & Frm.TxtFec1 & "#"

Un saludo.


Respuesta
2

Ahora que ya te han respondido, ¿por qué no pruebas a usar en vez de filtro un criterio?

Por ejemplo,

docmd.openform"facturas",,,,"fechafactura between [Escribe una fecha inicial] and [Escribe una fecha final]"

Así cuando vayas a ejecutar el evento te preguntará lo de Escribe una fecha inicial, la escribes y te preguntara lo de la final, la escribes y ya está el intervalo. ¿Qué sólo quieres un día? Pones la misma fecha final que la inicial y solucionado y así te ahorras tres cuadros de texto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas