VBA。无法从.mdb文件中获取数据。关闭对象时不允许操作

时间:2014-12-16 12:16:43

标签: vba adodb recordset

这是我的问题:我需要从网络硬盘驱动器上的.mdb文件中获取数据。我正在使用ADODB连接到它,但是当我尝试从我创建的RecordSet返回字段值时返回错误:

  

关闭对象时不允许操作

这是我的代码:

 Dim rs As New ADODB.Recordset
 Dim cmd As New ADODB.Command
    cmd.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ".mdb"
    cmd.CommandText = SQLRequst
    cmd.CommandType = adCmdText
    cmd.CommandTimeout = 900
    rs.CursorLocation = adUseClient
    rs.Open cmd, , adOpenForwardOnly, adLockReadOnly
    Debug.Print rs.Fields(0)
Set cmd.ActiveConnection = Nothing
Set cmd = Nothing
Set rs.ActiveConnection = Nothing

此刻我尝试了许多不同类型的连接。令我困惑的主要原因是它连接到.mdb文件并且还创建了RecordSet,但大多数值都设置为"当对象关闭时不允许操作" 我认为问题在于我连接和获取记录集的方式,因为我使用相同的方法连接到SQL数据库,它工作得很好。

任何帮助将不胜感激

*已编辑:SQLRequest =" SELECT * FROM tblStack WHERE StackID = XXXXX"

将代码更改为:

Dim rs As New ADODB.Recordset
Dim conn As New ADODB.Connection

conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ".mdb"

rs.Open SQLRequst, conn, adOpenForwardOnly, adLockReadOnly
Debug.Print rs.Fields(0) 

Set cmd.ActiveConnection = Nothing
Set cmd = Nothing
Set rs.ActiveConnection = Nothing

仍然调试没有打印任何东西,在Locals窗口中显示对象关闭时不允许使用Fields(0).Value Operation

1 个答案:

答案 0 :(得分:1)

问题出现在SQLRequst字符串中:

SQLRequest = "SELECT * FROM tblStack WHERE StackID='XXXXX'"

它需要''。