【问题标题】:"Open" Method Error with ADO Connection in Excel/AccessExcel/Access 中 ADO 连接的“打开”方法错误
【发布时间】:2014-08-20 17:17:15
【问题描述】:

尝试在 VBA 中使用 ADO 连接打开数据库时,我不断收到错误 - 我收到以下错误:

运行时错误“-2147467259 (80004005)”: 对象“_Recordset”的“打开”方法失败

我已经重新检查了所有文件路径和语法,但找不到下面的代码有什么问题 - 谁能帮忙?

Public Sub PlainTextQuery()

Dim rsData As ADODB.Recordset
Dim sConnect As String
Dim sSQL As String

Dim sCusip As String

sCusip = Trim(Range("cusip").Value)

' Create the connection string
sConnect = "Provider=Microsoft.ACE.OLEDB.12.0; " & _
    "Data Source=C:\Users\intern\Documents\NewStuff\ResiOffers_v1.accdb;"

' Create the SQL statement
sSQL = "SELECT Date, Cusip, Bond, OF, CF, Dealer, Price, Matcher, DayCount, MktValue " & _
    "FROM ResiOffersColor " & _
    "WHERE Cusip = 16163HAE1 " & _
    "ORDER BY Date;"

' Create the recordset object and run the query
Set rsData = New ADODB.Recordset
rsData.Open sSQL, sConnect, adOpenForwardOnly, _
    adLockReadOnly, adCmdText

' Make sure we get records back
If Not rsData.EOF Then
    ' Dump the contents onto the worksheet
    Sheet2.Range("A2").CopyFromRecordset rsData
    ' Close the recordset object
    rsData.Close
Else
    ' Close the recordset object
    rsData.Close
    MsgBox "Error: No records returned.", vbCritical
End If

' Destroy the recordset object
Set rsData = Nothing

End Sub

【问题讨论】:

    标签: vba ado


    【解决方案1】:

    执行该函数的人必须对该目录具有写访问权限,因为 ms-access 将尝试创建一个锁 (ldb) 文件。

    【讨论】:

    • 感谢您的回复 - 我刚刚通过在 SQL 查询字符串中的每个字段名称周围放置方括号 [] 来使代码正常工作......但现在有一个新问题 - 没有记录正在打印我的excel工作簿。我没有收到“没有返回记录错误”,所以我尝试打印记录似乎有问题,而不是检索记录......
    【解决方案2】:

    这里的问题是sSQL 语句。
    这一行:

    "WHERE Cusip = 16163HAE1 " & _
    

    应替换为:

    "WHERE Cusip = '16163HAE1' " & _
    

    在 SQL 中,您将字符串或文本用'(撇号)括起来。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2021-07-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-29
      • 1970-01-01
      相关资源
      最近更新 更多