我想创建一个非常动态的宏,它将更新数据库中的不同表,具体取决于用户选择的内容。每张表格当然有不同的标题和信息。我遇到更新问题(当用户向旧表添加新记录时)。这是代码的一部分,问题是它到达“.update”时,我得到“操作必须使用可更新查询”错误。操作必须使用可更新的查询/ SQL - VBA
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
什么类型是您的数据库文件“.accdb”?是不是打开或保护?你的代码看起来很好,除了'CursorType:= adOpenDynaset'我不认识 - 它不应该是'adOpenDynamic'? –
据我所知,它不受保护,我在关闭时运行它。另外,我将它更改为Dynamic并且它仍然不起作用:( – Cardonai
数据库是什么类型? –