Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/11/2004, 22:25
Avatar de Beakdan
Beakdan
 
Fecha de Ingreso: diciembre-2001
Ubicación: Monterrey, Nuevo León
Mensajes: 433
Antigüedad: 22 años, 4 meses
Puntos: 7
Edi87:
Yo tenía un problema idéntico. Ingresaba las fechas con el formato #mm/dd/aaaa# y al realizar búsquedas, solía tener resultados incorrectos. Intenté utilizar como literales de fecha formatos como #22/Dic/1985#, o sus versiones en inglés, alternando la posición del mes y del día, pero eso me ocasionaba nuevos errores. Al final, la solución es la más simple, pero no la más obvia.
La fecha para Visual Basic, no es otra cosa que un número decimal. Bueno, no decimal sino double. La parte entera del número representa fechas (conteo de días). La parte decimal representa la hora. Es por eso que el tipo de dato date puede contener fecha y hora, y es la razón por la cual puedes usar expresiones que sumen fecha y hora (Time() + Date() es equivalente a Now()).
Para acabar con este rollo: Si ya tienes la variable date inicializada conviértela a Long para considerar sólo la fecha, y pásala como parámetro en la búsqueda. Access devolveré sin problemas la fecha que corresponda al número, porque access almacena exactamente el mismo formato que VB. Para incluir también la hora de la variable date, conviértela a Double. Siempre lo hago así para evitar complicaciones, y aún no me han reportado errores debido a esto en los equipos donde se está aplicando esto.
Por ejemplo, usando tu sintaxis, pondría:
Código:
'Para considerar sólo la fecha
"SELECT * FROM Clientes WHERE 1 AND Recibida BETWEEN " & CLng(CDate(txtRecDesde)) & " AND " & CLng(CDate(txtRecHasta))
 
'Para considerar también la hora
"SELECT * FROM Clientes WHERE 1 AND Recibida BETWEEN " & CDbl(CDate(txtRecDesde)) & " AND " & CDbl(CDate(txtRecHasta))
Esto no es nada ortodoxo. Pero por lo menos a mí, me resulta muy útil, y quizás a tí también pueda serte de utilidad.

Hasta luego.