我當前使用Microsoft Office 2007並已將Access 2007數據庫鏈接到Excel 2007數據庫。到現在爲止還挺好。我可以更新Access數據庫並在Excel文件中自動顯示。這是我遇到問題的地方。VBA Excel-Access 3251運行時錯誤
當我嘗試從Excel內更新Access數據庫時;我不斷收到運行時3251錯誤。 =>運行時錯誤現在已解決,但在嘗試添加數據時,有關NULL值的新問題?
Sub ADODBExcelToAccess()
'Collecting data from the
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
'---NOTE: Sheet is set to auto refresh data from the database on loading---
' connect to the Access database
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & _
"Data Source=" & Application.ActiveWorkbook.Path & "\linktest.accdb;"
' open a recordset (i.e. a table)
Set rs = New ADODB.Recordset
rs.Open "linktest", cn, adOpenKeyset, adLockOptimistic, adCmdTable
' all records in a table
For i = 4 To 16
x = 0
Do While Len(Range("K" & i).Offset(0, x).Formula) > 0
With rs
'create a new record
.AddNew
.Fields("ID") = Range("A1" & i).Value
.Fields("PriceID") = Range("B1").Value
.Fields("ProductCode") = Range("C1").Value
.Fields("Price") = Range("D1" & i).Value
.Fields("CurrencyType") = Range("E1").Value
.Fields("Type") = Range("F1").Value
.Fields("Production") = Range("G1" & i).Value
.Fields("Quantity") = Range("H1" & i).Value
.Fields("Details") = Range("I1" & i).Value
.Fields("DateUpdated") = Range("J1" & i).Value
.Fields("Setup") = Range("K1" & i).Value
' stores the new record
.Update
End With
x = x + 1
Loop
Next i
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub
我使用的當前參考庫是Active X Data Objects 2.1庫。
什麼是錯誤?它是否在更新? – dbmitch
對不起,它的「.add新」或至少這是突出顯示的行 錯誤是3251錯誤,它說 「當前記錄集不支持更新。這可能是提供商的限制,或所選的鎖類型「 –
我討厭ado與訪問數據庫。但是,如果您不想使用DAO,請嘗試使用adoopendynamic而不是鍵盤集打開。在.open之後檢查RS.updatable屬性,以確保您的記錄可以更新。 ID是主鍵字段嗎? – dbmitch