Informe de Access No Respeta Fechas

Ya estoy en la fase final de mi proyecto y me encontré con un problema que llevo varios días sin poder resolver y el sábado tengo que presentarlo.

Resulta que tengo varios informes en accesos por rango de fechas, pero el campo de fecha de la tabla Pedidos_Enca guarda las horas, ya que así me lo solicitaron, pero al genera el reporte y le mando los parámetros FecInicio y Fecfinal no lo esta respetando. Por ejemplo tengo pedidos de Mayo y Junio, si coloco 01/05/2019 y 31/05/2019 también me muestra el pedido del 03/06/2019, ya le di mil vueltas y no encuentro la solución.

**Esto es el comando me mando a ejecutar***

DoCmd.OpenReport "rpt_Ventas_x_Fechas", acViewReport, , "Format(Pedidos_enca.Fecha,'dd/mm/yyyy') between  FecInicio  and  FecFinal", acDialog

Ya probe con Format, colocando #, ya coloque campos de texto (txtFecInicio, txtFecFinal) y nada

Agradecere su ayuda.. Por favor

1 Respuesta

Respuesta
2

Si no quieres tener problemas con las fechas, usa siempre el formato americano, es decir, mes/dia/año:

DoCmd. OpenReport "rpt_Ventas_x_Fechas", acViewReport,, "Pedidos_enca.Fecha between Format(FecInicio,'mm/dd/yyyy') and Format(FecFinal,'mm/dd/yyyy')", acDialog

Personalmente yo hubiera puesto dos cuadros de texto en el formulario (llamados txtFIni y txtFFin, por ejemplo) y así evito que salgan las ventanas pidiendo esos datos. Además, tiene la "ventaja" de que puedes controlar que se escriban los dos valores y si lo que se escribe son fechas o no.

El código quedaría muy parecido al tuyo (son hacer validaciones):

DoCmd. OpenReport "rpt_Ventas_x_Fechas", acViewReport,, "Pedidos_enca.Fecha between #" & Format(Me.txtFIni ,'mm/dd/yyyy') & "# and #" & Format(Me.txtFFin,'mm/dd/yyyy') & "#", acDialog

Para añadir validaciones podrías usar las funciones IsNull() para controlar que se haya escrito algo en cada cuadro de texto, IsDate(), para controlar que sean fechas, incluso podrías controlar que la fecha inicial sea anterior a la final

Gracias, en el primer caso, los usuarios de Guatemala están acostumbrados a ver la fecha dd/mm/yyyy es por eso que la necesito de esa forma.

En relación a la segunda respuesta, también ya coloqué cuadros de texto como lo mencionaba en la pregunta y nada.

El problema que yo veo es que el campo de donde extraigo las fechas tiene horas.

Siempre  muchas gracias y agradeceré si alguien más me puede ayudar.

Primero, que en el código formatees la fecha en estilo americano no tiene nada que ver con cómo la en la tabla o muestres en los formularios e informes.

Segundo, tanto los lenguajes Sql como VBA ( al igual que casi todos los lenguajes de programación) están basados en inglés americano, y por tanto las fechas las interpretan como mm/dd/aaaa...

Yo soy de España y uso la notación habitual de dd/mm/aaaa, pero al programar códigos con fechas, he de usar el formato correcto.

Tercero, que tu campo fecha incluya la hora no explica que te salga una fecha fuera del intervalo que pones, pero usar un formato de fecha incorrecto sí.

Si quieres, sube una copia con un par de registros inventados y le echo un ojo

Ok muchas gracias, voy hacer los ajustes correspondientes y te cuento.

Si en dado caso sigue el problema, a que correo te lo envío

Si tu problema persiste, súbela a dropbox, filebig, o similar y pon aquí el enlace de descarga.

Prueba también a formatear los dos lados:

DoCmd. OpenReport "rpt_Ventas_x_Fechas", acViewReport,, "Format(Pedidos_enca.Fecha,'mm/dd/yyyy') between Format(FecInicio,'mm/dd/yyyy') and Format(FecFinal,'mm/dd/yyyy')", acDialog

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas