【问题标题】:ADODB - why is my recordset read-only?ADODB - 为什么我的记录集是只读的?
【发布时间】:2012-12-14 08:57:02
【问题描述】:

在 Excel 中,我使用 ADODB 连接来构建记录集,从其自己的工作簿中的工作表中获取数据,如下所示:

Public Sub test()
    Dim cnn As New ADODB.Connection
    Dim rst As New ADODB.Recordset
    Dim strSQL As String
    Dim k As Variant

    cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
       "Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & ";" & _
        "Extended Properties=""Excel 12.0;HDR=No;IMEX=1;Readonly=False"";"

    strSQL = "SELECT F1 FROM [Workbench$];"

    rst.Open strSQL, cnn, adOpenStatic, adLockOptimistic
    rst.MoveFirst

    While Not rst.EOF
        rst("F1") = "NewValue"
        rst.Update
        rst.MoveNext
    Wend

End Sub

但是,当我运行代码时发生错误:

运行时错误“-2147217911 (80040e09)”:
无法更新。数据库或对象是只读的。

我已经检查了我打开的工作簿的权限并且没问题(每个人都可以完全控制访问)。

我在这里做错了什么?

【问题讨论】:

  • 尝试将 adOpenStatic 替换为 adOpenDynamic。

标签: excel vba adodb recordset


【解决方案1】:
rst.Open strSQL, cnn, adOpenStatic, adLockOptimistic

替换为

rst.Open strSQL, cnn, 1, 3

【讨论】:

    【解决方案2】:

    我通过使用 IMEX=0 解决了我的问题

    【讨论】:

    • 根据this 文章尝试添加/更新列表项时,这适用于 SharePoint ADO 连接。
    猜你喜欢
    • 2021-04-25
    • 2011-10-30
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多