Imprimir página | Cerrar ventana

Update con fecha

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=86830
Fecha de impresión: 27/Marzo/2026 a las 02:20


Tema: Update con fecha
Publicado por: gabores
Asunto: Update con fecha
Fecha de publicación: 22/Diciembre/2023 a las 04:06
Hola a todos

Nuevamente por aqui para ver si pueden ayudarme con un inconveniente que no estoy pudiendo resolver y no encuentro la manera de orientarme buscando en la WEB.
Estoy tratando de hacer un UPDATE de un dato en una tabla con una fecha que obtengo de una variable, pero si bien la variable funciona y obtengo el valor que requiero, cuando la aplico en el UPDATE no es reconocida.

Les muestro como lo hago para ver si pueden orientarme en donde está el error ya que no logro hacerlo por mi mismo.

Dim diadato As Long
diadato = DLookup("proveedorA_fijo_mensual_dia", "tbl_proveedores_A", "proveedorA_id = [Formularios]![frm_agenda_1]![frm_agenda_1B].[Form]![cuenta_id]")
           
Dim fechavto As Date
fechavto = CDate(DateSerial(Year(Date), Month(Date) + 1, diadato))

DoCmd.RunSQL "UPDATE tbl_proveedores_A SET tbl_proveedores_A.proveedorA_prox_vto = fechavto WHERE (((tbl_proveedores_A.proveedorA_id)=[Formularios]![frm_agenda_1]![frm_agenda_1B].[Form]![cuenta_id]));"

Cuando intento ejecutar el codigo me muestra el mensaje "Introduzca fechavto"

Desde ya muchas gracias.





Respuestas:
Publicado por: dokk
Fecha de publicación: 22/Diciembre/2023 a las 07:20
Hola gabores:

Para empezar "fechavto" es una variable que has definido en vba. Si la tienes entre las comillas de la sentencia SQL no se trata como variable sino sólo como texto, es decir, no lleva una fecha sino la cadena "fechavto". Además una fecha en SQL se pasa entre almohadillas (#).  Deberías concatenar de la siguiente forma:

"UPDATE tbl_proveedores_A SET tbl_proveedores_A.proveedorA_prox_vto= #" & fechavto & "# WHERE (((tbl_proveedores_A.proveedorA_id)=" & [Formularios]![frm_agenda_1]![frm_agenda_1B].[Form]![cuenta_id] & "));"

Lo mismo ocurre con [Formularios]![frm_agenda_1]![frm_agenda_1B].[Form]![cuenta_id], por eso te lo saco también de la cadena.

A ver qué tal te va.


-------------
Albert Hostein
Aprendiendo cayendo


Publicado por: Mihura
Fecha de publicación: 22/Diciembre/2023 a las 09:21
.. entre almohadillas y formateada 'yanqui' ...

"#" & Format(fecha, "mm/dd/yyyy") & "#"


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: xavi
Fecha de publicación: 22/Diciembre/2023 a las 14:35
Hola,

2 matices

@dokk --> Lo de [Formularios].... funciona en la consulta
@torito --> pasarlo a Long también funcionaría, ¿no?

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: gabores
Fecha de publicación: 22/Diciembre/2023 a las 17:19
Buenas tardes a todos.

Lo pude solucionar con la primer respuesta aplicando la corrección del formato y referencia a la variable

proveedorA_prox_vto= #" & fechavto & "# 

en cuanto al resto del código como se trataba de una variable numerica que referia al ID de la tabla y no hizo falta modificarlo.

WHERE (((tbl_proveedores_A.proveedorA_id)=[Formularios]![frm_agenda_1]![frm_agenda_1B].[Form]![cuenta_id]));"

Como siempre mi agradecimiento mas grande a todos por estar siempre ayudandonos desinteresadamente.

Saludos!



Publicado por: Mihura
Fecha de publicación: 22/Diciembre/2023 a las 17:36
@Mr Xavi: si

A veces se nos olvida a todo el mundo que una fecha es un campo numérico de tipo doble, donde la parte entera es el día y la parte decimal representa la hora, segundos, ....

Lo de ponerlo a Long es bueno, porque es otra manera de quitar la parte horaria de la fecha, que tan malos resultados trae ..


-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: dokk
Fecha de publicación: 22/Diciembre/2023 a las 19:30
Gracias por los apuntes a ambos. ¿Lo de "[formularios]!..." lo acepta tal cual, en español?

-------------
Albert Hostein
Aprendiendo cayendo



Imprimir página | Cerrar ventana