Ayuda con filtro por rango de fechas...

Tengo problemas con la búsqueda de pacientes por rango de fecha, lo que tengo lo de intentado de las siguientes formas:
1.- busca = "SELECT * FROM paciente where fecha >= #" & Format(fecinicio, "dd-mm-yyyy") & "# and fecha <= #" & Format(fectermino, "dd-mm-yyyy") & "#"
Set rst = Base.OpenRecordset(busca)
2.- busca = "SELECT * FROM paciente where fecha >= '" & Format(fecinicio, "dd-mm-yyyy") & "' and fecha <= '" & Format(fectermino, "dd-mm-yyyy") & "'"
Set rst = Base.OpenRecordset(busca)
3.- busca = "SELECT * FROM paciente where fecha >= #" & fecinicio & "# and fecha <= #" & fectermino & "#"
Set rst = Base.OpenRecordset(busca)
4.- busca = "SELECT * FROM paciente where fecha >= '" & fecinicio & "' and fecha <= '" & fectermino & "'"
Set rst = Base.OpenRecordset(busca)
5.- busca = "SELECT * FROM paciente where fecha between #" & fecinicio & "# and #" & fectermino & "#"
Set rst = Base.OpenRecordset(busca)
6.- busca = "SELECT * FROM paciente where fecha between '" & fecinicio & "' and '" & fectermino & "'"
Set rst = Base.OpenRecordset(busca)
Y me filtra, pero solo con el día, no con la fecha completa, por ejemplo ingreso:
08-10-2007
12-11-2007
15-12-2007
22-01-2008
03-02-2008
Y si busco desde: 01-10-2007 hasta: 30-10-2007, me muestra todos los datos y si lo filtro desde: 01-10-2007 hasta: 14-11-2007, me muestra:
08-10-2007
12-11-2007
03-02-2008
Entonces queda demostrado que esta solo filtrando por el día..
Bueno y la pregunta del millón sería ¿cómo busco entre dos fechas completas, día, mes y año?... Ahh.. Y estoy utilizando DTPicker para la fecha de inicio y termino..
Ojala allá sido claro con mi duda y espero me pueda y quiera ayudarme...

1 respuesta

Respuesta
2
busca = "SELECT * FROM paciente where fecha >= ' " & FechaInicio & " ' And fecha <= ' " & FechaFinal & " ' "
Así queda tu búsqueda:
Te puedo decir que cuando empecé con la rpogramacion me costo mucho la forma en que metía el valor de las variables y pues así quedaría.
Aclarro que el valor de la variable debe ser tipo fecha de lo contrario puede o no funcionar si la varable es tipo string . Ojo en eso que no es lo mismo.
Si no te funciona hazlo de esta forma.
"SELECT * FROM paciente Where fecha Between DateValue('" & FechaInicio & "' ) And DateValue('" & FechaFinal & "')"
Suerte y no dudes en volver a preguntar.
Hola, muchas gracias... era como me decías, pero con algunos cambios, por que cuando consultas con comillas simples (') arroja el error '3464' "no coinciden los tipos de datos en la expresión de criterios", por lo cual cambie de comilla simple a #. Ej.
asi me decias:
busca = "SELECT * FROM paciente where fecha >= ' " & FechaInicio & " ' And fecha <= ' " & FechaFinal & " ' "
asi lo deje:
"select * from paciente where fecha >= #" & FechaInicio & "# and fecha <= #" & FechaFinal & "#"
codigo que me funciono correctamente:
'***********************************************
'para mostrar las fechas de inicio y termino utilice la herramienta DTPicker
dim rst as recordset 'variable que almacenara todos los registros de la tabla
Dim fi, ft As Date 'importante declarar las variables como 'date'
fi = Format(fecinicio, "mm-dd-yyyy") 'muy importante este formato de fecha para buscar en access 'mm-dd-yyyy'
ft = Format(fectermino, "mm-dd-yyyy")
'la variable 'Base' es la variable de conexion que utilice en el modulo
Set rst = Base.OpenRecordset("select * from paciente where fecha >= #" & fi & "# and fecha <= #" & ft & "#")
'************************************************
Eso fue lo que realice... ojala le ayude a otro con la misma duda que yo tenia...
Muchas gracias experto por la gran ayuda brindada!..
Saludos a todos...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas