** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Update con fecha
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Update con fecha

 Responder Responder
Autor
Mensaje
gabores Ver desplegable
Habitual
Habitual
Avatar

Unido: 06/Agosto/2007
Localización: Bolivia
Estado: Sin conexión
Puntos: 123
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita gabores Cita  ResponderRespuesta Enlace directo a este mensaje Tema: Update con fecha
    Enviado: 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.


Arriba
dokk Ver desplegable
Asiduo
Asiduo


Unido: 15/Mayo/2020
Localización: Hendaye
Estado: Sin conexión
Puntos: 201
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita dokk Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.

Access Aplicaciones
Tecsys.es
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: Sin conexión
Puntos: 14926
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita xavi Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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

Mi web
Arriba
gabores Ver desplegable
Habitual
Habitual
Avatar

Unido: 06/Agosto/2007
Localización: Bolivia
Estado: Sin conexión
Puntos: 123
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita gabores Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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!

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 14428
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita Mihura Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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.

Access Aplicaciones
Tecsys.es
Arriba
dokk Ver desplegable
Asiduo
Asiduo


Unido: 15/Mayo/2020
Localización: Hendaye
Estado: Sin conexión
Puntos: 201
Opciones de entrada Opciones de entrada   Gracias (0) Gracias(0)   Cita dokk Cita  ResponderRespuesta Enlace directo a este mensaje Enviado: 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
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable