Visual Basic - El misterio de las fechas en Access

Life is soft - evento anual de software empresarial
 
Vista:

El misterio de las fechas en Access

Publicado por Pablo (33 intervenciones) el 04/01/2005 05:51:12
Les comento, me e roto la cabeza por muchos días con una consulta:

CargaDatos("Select * From TblDatos Where Seccion ='" & strSeccion & "' And Fecha "=#" & Format(strDate, "dd/mm/yyyy") & "#;")

CargaDatos <--- es un procedimiento que tiene un parametro String, despues de renegar tanto se me ocurrio meterle Format(), e increiblemente FUNCIONO!!!, el tema es que todabía no entiendo porque , si de todos modos no deja de ser, de transformarse en una cadena..... :(.....
Que opinan???
O tienen otrs experiencias???
Saludos >)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:El misterio de las fechas en Access

Publicado por bla (230 intervenciones) el 04/01/2005 20:15:18
Si quitas el format la conversión de la fecha a string se hace en función de la configuración local de la máquina, que puede no ser igual a la configuración que espera access.
Aún te queda una ambiguedad, en la mayoría de los casos access espera el formato #mm/dd/yyyy#, por lo que es muy posible que no te esté tratando la fecha que tú quieres. El #01/02/2005# sería el 2 de enero. Para evitar cualquier tipo de error es mejor utilizar siempre el formato inverso:
... =#" & format(strDate,"yyyy/mm/dd") & "#...
De este modo el #2005/02/01# sólo puede ser el 1 de febrero. El resto de formatos puede dar problemas cuando ejecutes el programa en otra máquina.

un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El misterio de las fechas en Access

Publicado por Pablo (33 intervenciones) el 06/01/2005 17:11:29
Muchas Gracias!!!! voy a implementar sus ayudas........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El misterio de las fechas en Access

Publicado por El Ferna Stereo Laser (33 intervenciones) el 05/01/2005 19:42:27
Lo que dice la respuesta anterior es cierto la funcion Format no te sirve porque esta varia de PC a PC dependiendo de la configuracion regional que tengas. Una alternativa a esto y que me ha funcionado muy bien hasta ahora porque la he probado en diferentes maquinas con configuraciones diversas es la funcion Datevalue la cual funciona de la siguiente forma:

"Select * From Reclasificacion Where Fecha Between DateValue(""" & FechaIni & """) And DateValue(""" & FechaFin & """) Order by Fecha"

La funcion Datevalue convierte la fecha que envies con cualquier formato al formato que tengas en la configuracion regional de tu maquina que es el que usa Access.

Espero que te sirva. Bye.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El misterio de las fechas en Access

Publicado por bla (230 intervenciones) el 07/01/2005 00:12:00
No os fies de DateValue.
En el ejemplo que pone Ferna:
DateValue(""" & FechaFin & """)
funciona cuando FechaFin esté definido como fecha (dim FechaFin as date), pero puede fallar si está definido como un string que vale "1/2/2004"
Sigue quedando la ambigüedad de como interpretar el string "1/2/2004", ¿es el uno de febrero, o el dos de enero?
La mejor solución para evitar problemas es convertir simpre a string con el formato 2004/02/01.
Ha Ferna le funciona porque vb está convirtiendo el date FechaFin a String según la configuración local, y está convirtiendo este String a Date con la función DateValue también con la configuración local de la misma máquina. Repito que le puede fallar cuando FechaFin ya sea un string con formato ambiguo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:El misterio de las fechas en Access

Publicado por Pablo (33 intervenciones) el 07/01/2005 19:23:31
Si es verdad, por eso es bueno intercambiar nuestrar opiñones.........
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar