Problemas con las fechas

Tengo el siguiente problema con las fechas, a ver si me aclaras el tema:
Utilizo muchas veces el Docmd. Runsql para actualizaciones sencillas, borrado de algún registro, etc... Habitualmente utilizo la "estrategia" de montar un string con la sentencia, que concatene un control que contiene el dato a actualizar o a buscar, más o menos así:
"select mi_campo from mi_tabla where " & me. Control o bien "update xxxx as xxxx, etc
Los problemas empiezan cuando trato con fechas. Una vez que entras en los módulos parece que el Access se "lia" entre elformato de fecha nuestro y el americano... De forma que "01/02/00" pasa a ser el 2 de enero
Si fuera SIEMPRE así, no tendría problemas... Pero en el mismo entorno de programación, una fecha como "13/02/00", que, siguiendo el mismo criterio que antes debería dar un error (¿día 2 del mes 13?), sin embargo lo admite perfectamente como 13 de febrero... Por lo tanto no tengo un criterio único y si concateno un control de fecha me "baila" el resultado...
He solventado el problema concatenando Cdbl(MI_FECHA), con lo que se transforma la fecha a doble precisión y "parece" que sí que se lo traga...
¿Hay una solución más elegante? (Espero que se haya entendido)
2

2 respuestas

Respuesta
1
¡Mal número el 13! Justo a partir del trece es cuando te engaña, pues como es imposible el 2-13-00 Access se lo piensa y se da cuenta de que estamos en un formato de fecha distinto.
No sólo no conozco una solución más elegante, es que la tuya me parece de etiqueta.
Yo también monto las cadenas de las sentencias SQL y lo que suelo hacer es usar format ([fecha], "mm-dd-yy") que da como resultado una cadena de texto que se monta muy con la que estamos trabajando. Sin embargo lo hago así por rutina y en este contexto, pero trabajar con fechas en formato Dbl es perfecto; es como lo hace la máquina.
Respuesta
1
Ese es uno de los aspectos en los que Access deja mucho que desear, y a mí particularmente me ha dado muchos quebraderos de cabeza.
Hay alguna solución, tal como comprobar si el día es superior a 12, entonces actuar de un modo, y si no, actuar de otro, y alguna más del mismo calibre; pero sinceramente creo que convertir a doble precisión es la solución más elegante, de modo que creo que has hecho lo mejor.
Coincido contigo que lo de mirar si el día es > de 12 me parece una putada... además... ¿quién nos dice que los años que acaban en 0 no hacen que access entienda bien las fechas >12?
Seguiré con el cdbl y gracias por todo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas