Problemas con el Formato de hora

Estoy tratando de actualizar una tabla, pero no coincide la hora que tengo registrada con el formato que le pongo en el Where. He intentado varias formas, pero no puedo resolverlo. El campo en la tabla es tipo date con formato de hora larga.

2 respuestas

Respuesta
1

El error de base lo tienes en la expresión del Format, porque no existe (y eso lo ves en que te lo deja todo en minúsculas) el formato longtime.

Si quieres usar un formato con nombre, además de usar el nombre correcto, debes ponerlo entre comillas (https://docs.microsoft.com/es-es/office/vba/language/reference/user-interface-help/format-function-visual-basic-for-applications?f1url=https%3A%2F%2Fmsdn.microsoft.com%2Fquery%2Fdev11.query%3FappId%3DDev11IDEF1%26l%3Des-ES%26k%3Dk(vblr6.chm1008925)%3Bk(TargetFrameworkMoniker-Office.Version%3Dv16)%26rd%3Dtrue).

En tu caso:

HoraI=Format(xTerminar.Column(3),"Long Time")

Luego tienes el otro fallo que te comentan, las fechas/horas van entre almohadillas, los textos entre comillas

¡Gracias! ya intenté con varios formatos y no encuentra el registro, aunque parece que todo está bien.

La línea con el formato que te indico te tiene que funcionar, porque es la forma correcta de llamarlo por su "nombre".

Puede estar pasando que la cuarta columna del combobox/listbox (xTerminar. Column(3)) no sea la que tiene el valor de la hora...

Gracias. pero no he podido resolverlo ... esto es lo que he intentado. todo está en la ultima instrucción, porque si la quito no tengo error.

Vamos a ver... te comento las 4 instrucciones que dices has intentado:

... AND HoraInicio='" & xTerminar.Column(3) & "'" -> No te funcionará porque las fechas/horas van entre almohadillas (#) y no entre comillas ('), que es como van los textos. Por eso el error de que no coinciden los tipos (un texto no es una fecha)

... AND HoraInicio=#" & xTerminar.Column(3) & "#"   -> esta es la que te tendría que funcionar, si el valor de la columna es una fecha y no un texto. El error de sintaxis probablemente venga provocado por eso: el cuadro combinado lo debe tomar como texto y no como fecha

... AND HoraInicio=#" & FormatDateTime(xTerminar.Column(3),vbLongTime) & "#" -> el mismo comentario que arriba

... AND HoraInicio=#" & FormatDateTime(xTerminar.Column(3),vbLongTime) & "#" -> El mismo comentario que en el primer caso (usar almohadillas en vez de comillas)

Sobre el uso de FormatDateTime: el valor del primer parámetro debe ser una fecha o una cadena de texto interpretable como fecha. Por ejemplo, en mi caso:

Si tengo una variable de fecha (uno) y le asigno el segundo valor (con el P.M.) el propio editor de VBA me dice que no es una fecha válida (lo marca en rojo y salta error de sintaxis si intento ejecutar el código. Si le doy un valor como el primero (con PM) lo acepta como fecha. Si la variable está definida como texto (variable dos), admite las dos sin problema.

Si ejecuto la primera parte del código, verás que formatDateTime interpreta los dos valores como fecha correctamente y los devuelve en formato fecha larga:

Si intento ejecutar la segunda parte (sin la variable uno, que ya da error solo por asignarle un valor incorrecto), error de que no coinciden los tipos, porque la cadena de texto no se interpreta como una fecha:

Me da que ese es el problema que tienes, que no te interpreta la fecha como fecha válida por los puntos del "p.m."

Una solución sería quitarle los puntos por ejemplo con la función Replace():

... AND HoraInicio=#" & FormatDateTime(Replace(xTerminar.Column(3),".",""),vbLongTime) & "#"

... AND HoraInicio=#" & Replace(xTerminar.Column(3),".","") & "#"

o

... AND HoraInicio=#" & Format(Replace(xTerminar.Column(3),".",""),"Long Time") & "#" 

¡Gracias! Por tus comentarios, creo que más bien es el cuadro combinado, que lo toma como texto. Voy a pasar la fecha del cuadro combinado a una variable tipo fecha antes de hacer el query.

Sveinbjorn El Rojo, así fue como funcionó, muchas gracias.

Perfecto!

Respuesta
1

No he revisado la instrucción entera pero para referirse a una variable, tanto sea fecha como hora es

...and horainicio=#" & horai & "#"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas