我想創建一個非常動態的宏,它將更新數據庫中的不同表,具體取決於用戶選擇的內容。每張表格當然有不同的標題和信息。我遇到更新問題(當用戶向舊錶添加新記錄時)。這是代碼的一部分,問題是它到達「.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
數據庫是什麼類型? –