Access - Fechas en formato español busca en formato americano

 
Vista:
Imágen de perfil de Jesus
Val: 8
Ha aumentado su posición en 331 puestos en Access (en relación al último mes)
Gráfica de Access

Fechas en formato español busca en formato americano

Publicado por Jesus (4 intervenciones) el 21/06/2021 12:53:45
Hola Grupo,

Os escribo porque me he quedo un poco perplejo con lo que me ha pasado. Resulta que tengo mi BD creada y en ella las fechas aparecen en el formato español (dd/mm/aaaa). Hasta aquí todo perfecto.

El problema se me ha presentado cuando quiero buscar una fecha. Una de mis tablas graba los partes de trabajo, y lógicamente un campo es la fecha del parte. Concretamente tengo estos datos introducidos:
Fecha_Parte = 07/06/2021 ( 7 de Junio de 2.021 ). Con esta fecha hay al menos 5 partes. El problema me lo encuentro cuando mediante un formulario, le doy al usuario la posibilidad de que consulte los partes de una fecha concreta. El usuario introduce la fecha que quiere buscar en el TxtFechaBuscar. Por ejemplo, se introduce 07/06/2021 la da al botón buscar y curiosamente no aparece nada. Cuando como digo deberían aparecer 5 registros.

La consulta que realiza es sencilla “ SELECT * From PartesTrabajo WHERE fecha_Parte = #07/06/2021# “ (“07/06/2021” es el valor que haya en el campo TxtfechaBuscar y que ha introducido el usuario ).

Me quedo de piedra. ¿ Si todo está bien, porque no devuelve registros esta consulta ?. Pruebo con otras fechas y detecto esto:

Pongo fecha de búsqueda 02/03/2021 ( 2 de marzo de 2.021 ) y me muestra los registros de fecha 03/02/2021 , es decir los del 3 de Febrero de 2.021. Me está bailando el mes por el dia y al contrario

¿Que se me ha escapado a la hora de confeccionar las BD para que ocurra esto? Y lo más importante ¿Que solución tenemos para arreglar este problema de fechas?

Muchas gracias de antemano.
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

Fechas en formato español busca en formato americano

Publicado por Anonimo (3316 intervenciones) el 21/06/2021 14:56:46
Es tan sencillo como asumir que se trabaja con una versión que ha sido 'traducida' a un idioma (y a todos los idiomas) pero que a un nivel mas bajo (nivel de VBA) trabaja solo en el de sus creadores (y es lo correcto).

Si se utiliza con la capa de abstracción de idioma (formularios, consultas y macros) la traducción es automática, pero si se profundiza un poco o se hace en 'su' idioma (no el local que puede ser castellano, ruso o chino y demás variedades de esta torre de Babel) o se le da libertad para interpretar y ... interpreta lo que puede.

Opciones:
.- Utilizar campos de tipo fecha de Access y la capa de abstracción (el idioma local) y todo funciona sin problemas.
.- Darle formato americano a las fechas si se sale de la capa de abstracción.
.- Como solución definitiva ... utilizar el dato real (un numero) que será el mismo en cualquier país (el natal incluido).

Reglas:
El día es la unidad, las horas minutos .... son fracciones de la unidad, una hora = 1/24, un minuto 1/1440 y todo ello en decimal, 1/2 dia (las 12 horas) son un 0.5 días.

De texto (fecha en formato local) a fecha Access:
1
CDate("cualquer representacion en texto de una fecha local")

De Fecha en 'formato Access' a numero (el dato real en la tabla):
1
CDbl([campo-fecha])

Otro detalle a tener en cuenta es el uso de la coma (separador de listas en origen, separador decimal en castellano) y también tiene solución casi siempre:
1
Str( [el numero] )


La conclusión es que para cambiar de entorno (de la capa de abstracción a VBA) hay que hacer a mano lo que antes era limitado pero automático.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Jesus
Val: 8
Ha aumentado su posición en 331 puestos en Access (en relación al último mes)
Gráfica de Access

Fechas en formato español busca en formato americano

Publicado por Jesus (4 intervenciones) el 21/06/2021 18:14:15
Hola ,

gracias por la explicación, pero ya tengo toda la BD hecha y cualquier cambio me supondría muchísimo trabajo.

Me voy a responder a mi mismo, y con eso queda esto por si a alguien le ayuda en un futuro. Un compañero de otro foro me ha ayudado con su respuesta y me dice que ponga la instrucción SQL de esta manera:

SELECT * From PartesTrabajo WHERE fecha_Parte =" & "#" & Format(Nz(Me.TxtfechaBuscar, Date), "mm/dd/yyyy") & "#"

Y efectivamente funciona a las mil maravillas.
Así que tomen nota aquellos a los que le interese.
Saludos y Gracias.
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

Fechas en formato español busca en formato americano

Publicado por Anonimo (3316 intervenciones) el 21/06/2021 21:43:21
Simplemente se ha aplicado la segunda de las opciones:

............
.- Darle formato americano a las fechas si se sale de la capa de abstracción.
.............

Pero no siempre funciona y si lo utiliza alguien cuyo formato regional ya es ese ... se le da 'la vuelta a la tortilla´.
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