VBA Excel-Access 3251运行时错误

罗南·奥德里斯科尔

我目前使用Microsoft Office 2007,并将Access 2007数据库链接到Excel 2007数据库。到目前为止,一切都很好。我可以更新Access数据库,它会自动显示在Excel文件中。这是我遇到的问题。

当我尝试从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数据对象2.1库。

罗南·奥德里斯科尔

回答

好的,所以问题是当我尝试使用以下命令向数据库“添加”新记录时遇到运行时错误

Do While Len(Range("K" & i).Offset(0, x).Formula) > 0
        With rs
            'create a new record
            .AddNew
            .Fields("ID") = Range("A1" & i).Value ...

这样一来,我便可以将Excel电子表格中的记录保存到Access数据库中(均为office 2007)。

我在Excel中打开了连接选项,选择了连接的属性,并将模式更改为以下“; Mode = Share Deny None!”。

所以现在我的连接字符串如下所示:

Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data
Source=C:\linktest.accdb;Mode=Share Deny None;Extended Properties="";
Jet OLEDB:System database="";
Jet OLEDB:Registry Path="";Jet OLEDB:Engine Type=6;
Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;
Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:
New Database Password="";Jet OLEDB:Create System Database=False;
Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;
Jet OLEDB:Compact Without Replica Repair=False;
Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False

然后,当我返回一条错误消息,指出我尝试返回的数据给出了“ NULL”值时,我遇到了第二个问题。这是因为我试图将数据保存到返回错误的数据库的主键中。

我只是注释掉了这一行,从而解决了这个问题。

我还更改了对Microsoft ActiveX数据对象6.1库的引用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA运行时错误1004

来自分类Dev

Excel VBA运行时错误1004

来自分类Dev

运行时错误13 VBA Excel

来自分类Dev

VBA Excel 错误运行时错误“53”

来自分类Dev

Access 2010中的VBA-运行时错误430

来自分类Dev

SolidWorks 2016 SaveAs Access VBA运行时错误438

来自分类Dev

MS ACCESS VBA运行时错误“ 3021”;与.MoveNext

来自分类Dev

MS ACCESS - VBA 中的错误运行时 3141 SQL

来自分类Dev

读取图表标签值运行时错误(Excel VBA)

来自分类Dev

Excel VBA,Http.ResponseText运行时错误91

来自分类Dev

Excel VBA运行时错误'-2147319767(80028029)'

来自分类Dev

运行时错误462使用Excel访问VBA

来自分类Dev

VBA Excel做While循环运行时错误

来自分类Dev

Excel VBA运行时错误“ 70”:权限被拒绝

来自分类Dev

Excel VBA Vlookup运行时错误1004

来自分类Dev

运行时错误13 VBA Excel 2007

来自分类Dev

Excel VBA-运行时错误1004

来自分类Dev

Excel VBA,Http.ResponseText运行时错误91

来自分类Dev

运行时错误70权限被拒绝Excel VBA

来自分类Dev

VBA Excel做While循环运行时错误

来自分类Dev

运行时错误91- Excel VBA

来自分类Dev

Excel VBA:运行时错误424,需要对象

来自分类Dev

Excel VBA查找函数获取运行时错误1004

来自分类Dev

Excel VBA运行时错误类型不匹配13

来自分类Dev

Excel VBA:.find函数返回运行时错误91

来自分类Dev

运行时错误“424” - Excel 中的 VBA

来自分类Dev

带有 .quit 的 vba excel 运行时错误 438

来自分类Dev

需要运行时错误“424”对象:Excel VBA

来自分类Dev

Excel VBA:运行时错误(对象“范围”的方法“值”失败),但仅在连续运行时