0
我正在把一個Excel前端與Access數據庫放在一起,以便我的一些同事可以整理來自以前項目的數據(無需學習使用Access自己!)添加記錄到Excel中的訪問 - 記錄集是隻讀
因此,我有一個Excel工作簿中的「數據」表,偶爾從數據庫刷新,然後是一個「儀表板」表,允許過濾該數據。
我遇到麻煩的地方在於關閉循環 - 允許將新數據輸入到數據庫中。相關代碼如下:
Private Sub btnDBImport_Click()
Dim rst As ADODB.Recordset
Dim errorList As String
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
With cn
.Provider = "Microsoft.ACE.OLEDB.16.0"
.ConnectionString = "\\FileAddress\DB.accdb"
.Open
End With
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseServer
rst.Open Source:="TableName", _
ActiveConnection:=cn, _
CursorType:=adOpenDynamic, _
LockType:=adLockOptimistic, _
Options:=adCmdTableDirect
If validationTest = False Then
errorList = errorList & "Data at row " & i & " was not added to the database due to missing information." & vbCrLf
Else
rst.AddNew
With rst
.Fields(1) = Value1
.Fields(2) = Value2
End With
rst.Update
End If
Next i
If errorList <> "" Then
MsgBox errorList, vbOKOnly, "Data error"
End If
rst.Close
Set rst = Nothing
cn.Close
Set cn = Nothing
End Sub
以上是涉及定義,打開和處理記錄集的所有內容;我在rst.AddNew得到一個錯誤,因爲「無法更新,數據庫或對象是ReadOnly」。 任何幫助表示讚賞。
您是否驗證過您是否可以通過Access將記錄添加到表中,或者數據庫是否可能在其他位置設置爲ReadOnly?另外,請嘗試'rst.CursorLocation = adUseClient',因爲Access始終在客戶端上運行。這是我偶然發現的,因爲我認爲adUseServer可能會讓你的RecordCount屬性 –
哼。數據庫目前在Access中以只讀方式打開,因此我必須查看是否可以深入瞭解底層。謝謝吉米 –