operacion - La operación debe usar una consulta/SQL actualizable-VBA
microsoft jet database engine error 80004005 la operación debe usar una consulta actualizable (2)
Intento crear una macro muy dinámica que actualice diferentes tablas en una Base de Datos, dependiendo de lo que el usuario elija. Cada tabla tiene, por supuesto, distintos títulos e información. Tengo un problema con la actualización (cuando el usuario agrega nuevos registros a una Tabla anterior). Esto es parte del código, el problema es cuando llega al ".update", obtengo el error "La operación debe usar una consulta actualizable".
Dim DBCnn As ADODB.Connection
Dim RecSet As ADODB.Recordset
Dim sQRY As String
Dim FilePath, Titulo, Tabla As String
Dim LastRow, LastColumn, TotalRecords, Id As Long
Set DBCnn = New ADODB.Connection
Set RecSet = New ADODB.Recordset
DBCnn.Mode = adModeReadWrite
DBCnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & FilePath & ";"
sQRY = "SELECT * FROM Customers" & Tabla '' & " WHERE PopID = " & lngid
RecSet.CursorLocation = adUseClient
RecSet.Open _
Source:=sQRY, _
ActiveConnection:=DBCnn, _
CursorType:=adOpenDynaset, _
LockType:=adLockOptimistic
Do While Range("A" & LastRow).Value <> ""
'' repeat until first empty cell in column A
With RecSet
.AddNew
.Fields("Id") = Range("A" & LastRow).Value
.Fields("Name") = Range("B" & LastRow).Text
.Fields("Age") = Range("C" & LastRow).Value
.Update ''(Here''s my error)
End With
LastRow = LastRow + 1
Loop
Descarta esta línea:
RecSet.CursorLocation = adUseClient
O inténtalo así en su lugar:
RecSet.CursorLocation = adUseServer
Consulte la sección Comentarios en CursorLocation Property (ADO) en MSDN:
"Si la propiedad CursorLocation está establecida en adUseClient , se podrá acceder al conjunto de registros como de solo lectura y no será posible actualizar el conjunto de registros al host".
Está concatenando una cadena aquí: "SELECCIONAR * DE Clientes" y Tabla, pero no veo dónde se proporciona Tabla.
¿Has intentado ejecutar la consulta directamente en Access?
Además, ¿has intentado cambiar el cursortype todavía? http://www.w3schools.com/ado/prop_rs_cursortype.asp