Error 3075 en tiempo de Ejecución VBA SQL

El problema que tengo es que quiero exportar información de una tabla pedidos a una tabla entregas, pero tengo problemas con la sentencia, el código que estoy usando es el siguiente:

Para la primera tabla que no tengo problemas:

DoCmd.RunSQL "INSERT INTO tbl_AlmacenEntregaFecha (FechaPedido, NPedido, IdtblFarmacias, FechaEntrega, NEntrega, Usuario) VALUES (Fecha, NPedido, IdtblFarmacias, date(), txt_NEntrega, Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value)"

Esta línea me busca el código del registro anterior

Dim Id_Registro As Integer
Id_Registro = DLookup("Id", "tbl_AlmacenEntregaFecha", "[NPedido] = " & Me.NPedido)

Esta sentencia es mi problema:

DoCmd.RunSQL "INSERT INTO tbl_AlmacenEntrega (IdMedicamentos, IFechaEntrega, Cantidad, Usuario) SELECT (IdMedicamentos, & Id_Registro &, Cantidad, Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value) FROM tbl_FarmaciasEntrega WHERE Id = " & Me.Id.Value

me dice "Se ha producido el error 3075 en tiempo de ejecución: Error de sintaxis (falta operador) en la expresión de consulta  (IdMedicamentos, & Id_Registro &, Cantidad, Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value), estimo que es porque el Id_Registro es una variable que he creado dentro del código, pero es una constante que la necesito para exportarla a la otra tabla.

1 Respuesta

Respuesta
1

A priori, lo que veo en tuSQL es que tienes mal colocado el paréntesis de cierre, debiera ser así:

DoCmd.RunSQL "INSERT INTO tbl_AlmacenEntrega (IdMedicamentos, IFechaEntrega, Cantidad, Usuario) SELECT (IdMedicamentos, & Id_Registro &, Cantidad, Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value FROM tbl_FarmaciasEntrega WHERE Id = " & Me.Id.Value & ")"

Un saludo!


Previamente, muchas pero muchas gracias por su pronta respuesta, he realizado los cambios, pero continúa con el mismo error puede ser por los campos:

Id_Registro y

Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value

Esos campos son constantes que tiene que registrar en la tabla donde se exporta la información.

Atentamente.,

Mirando con detenimiento la SQL, veo que tienes otro error, te faltan las comillas dobles antes y después de Id_Registro:

DoCmd.RunSQL "INSERT INTO tbl_AlmacenEntrega (IdMedicamentos, IFechaEntrega, Cantidad, Usuario) SELECT (IdMedicamentos, " & Id_Registro & ", Cantidad, Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value FROM tbl_FarmaciasEntrega WHERE Id = " & Me.Id.Value & ")"

Negativo, nada

Estoy intentando hacer con un recordset pero también fallo en la sentencia sql, ya que necesito la tabla filtrada, así:

Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM tbl_farmaciaspedido WHERE [IdFechaPedido] " = Me.Id.Value)

Me dice error en tiempo de ejecución 3078, no puede encontrar la consulta de entrada 'Falso'.

Volviendo con la SQL original, si el campo usuario es de texto, tendría que ir entre comillas simples:

DoCmd.RunSQL "INSERT INTO tbl_AlmacenEntrega (IdMedicamentos, IFechaEntrega, Cantidad, Usuario) SELECT (IdMedicamentos, " & Id_Registro & ", Cantidad,'" & Forms![frm_UsuarioActivo]![txt_UsuarioActivo].value & "' FROM tbl_FarmaciasEntrega WHERE Id = " & Me.Id.Value & ")"

Ahora que pones el recordset, creo que tienes otro error: ¿El campo es IFechaEntrega o IDFechaEntrega?

Vamos con el recordset: el igual tienes que meterlo dentro de las comillas y te falta el & para encadenar:

Set Rst1 = CurrentDb.OpenRecordset("SELECT * FROM tbl_farmaciaspedido WHERE [IdFechaPedido]=" & Me.Id.Value)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas