Se ha producido el error '-2147217900 (80040E14) en tiempo de ejecución

Error de sintaxis (falta operador) en expresión de consulta 'id='

No puedo actualizar la Base de Datos, agradeceré si alguien me ayuda a corregir el error, gracias.} este es el código.

Public valorID
Option Explicit
Dim CNroCUIT, CDenominacion, CImpuestoGanancias, CIVA, CMonotributo, CintegranteSociedad, CEmpleador, CActividadMonotributo
Private Sub btn_ActualizaAccess_Click()
Dim Conn As ADODB.Connection
Dim MiConexion
Dim Rs As ADODB.Recordset
Dim MiBase As String
Dim Query As String
Dim i, j
Dim Cuenta As Long
Dim Numero As Long
MiBase = "SueldosyJornales.accdb"
Set Conn = New ADODB.Connection
MiConexion = Application.ThisWorkbook.Path & Application.PathSeparator & MiBase
With Conn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.Open MiConexion
End With
CNroCUIT = Me.txt_NroCUIT.Value
CDenominacion = Me.txt_Denominacion.Value
CImpuestoGanancias = Me.txt_ImpuestoGanancias.Value
CIVA = Me.txt_IVA.Value
CMonotributo = Me.txt_Monotributo.Value
CintegranteSociedad = Me.txt_IntegranteSociedad.Value
CEmpleador = Me.txt_Empleador.Value
CActividadMonotributo = Me.txt_ActividadMonotributo.Value
Query = "UPDATE CUIT SET Nro_CUIT = '" & CNroCUIT & "', Denominacion = '" & CDenominacion & "', Impuesto_Ganancias = '" & CImpuestoGanancias & "', IVA = '" & CIVA & "', Monotributo = '" & CMonotributo & "', Integrante_Sociedad = '" & CintegranteSociedad & "', Empleador = '" & CEmpleador & "', Actividad_Monotributo = '" & CActividadMonotributo & "' WHERE Id = " & valorID
Set Rs = New ADODB.Recordset
Rs.CursorLocation = adUseServer
Rs.Open Source:=Query, ActiveConnection:=Conn                          ' aqui se prodece el error
Conn.Close
Set Rs = Nothing
Set Conn = Nothing
MsgBox "Registro Actualizado", vbInformation, "Sueldos y Jornales"
Unload Me
End Sub
Private Sub btn_Cerrar_Click()
frm_ActualizaAccess.Hide
End Sub
Private Sub UserForm_Initialize()
Dim Cuenta As Long
Dim i As Long
Cuenta = frm_BuscaModificaElimina.ListBox1.ListCount
For i = 0 To Cuenta - 1
If frm_BuscaModificaElimina.ListBox1.Selected(i) = True Then
valorID = frm_BuscaModificaElimina.ListBox1.List(i)
Me.lblID.Caption = valorID
CNroCUIT = frm_BuscaModificaElimina.ListBox1.List(i, 1)
Me.txt_NroCUIT.Value = CNroCUIT
CDenominacion = frm_BuscaModificaElimina.ListBox1.List(i, 2)
Me.txt_Denominacion.Value = CDenominacion
CImpuestoGanancias = frm_BuscaModificaElimina.ListBox1.List(i, 3)
Me.txt_ImpuestoGanancias.Value = CImpuestoGanancias
CIVA = frm_BuscaModificaElimina.ListBox1.List(i, 4)
Me.txt_IVA.Value = CIVA
CMonotributo = frm_BuscaModificaElimina.ListBox1.List(i, 5)
Me.txt_Monotributo.Value = CMonotributo
CintegranteSociedad = frm_BuscaModificaElimina.ListBox1.List(i, 6)
Me.txt_IntegranteSociedad.Value = CintegranteSociedad
CEmpleador = frm_BuscaModificaElimina.ListBox1.List(i, 7)
Me.txt_Empleador.Value = CEmpleador
CActividadMonotributo = frm_BuscaModificaElimina.ListBox1.List(i, 8)
Me.txt_ActividadMonotributo.Value = CActividadMonotributo
End If
Next i
End Sub

Respuesta
2

El problema está en que no asignas un valor a la variable valorID que usas como filtro en la SQL de actualización en ese procedimiento de actualización.

Sí se lo asignas en el evento Initialize del Formulario, pero como es una variable que no declaras a nivel de módulo (ni, supongo, con alcance global en otra parte), ese valor que le das no lo "arrastra" al procedimiento del botón.

Si declaras la variable a nivel de módulo (comom CNroCUIT y demás) deberías resolverlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas