Access 2010 VBA - DAO数据库连接“此类对象不支持此操作”

时间:2014-07-31 20:58:19

标签: ms-access access-vba database-connection

我真的被困住了。我的同事和我无法弄清楚为什么这个数据库不会连接到“CurrentDb”。这是我的代码:

Dim db As Database, rs As DAO.Recordset
Dim strSQL As String, strRowSource As String

strSQL = "SELECT * FROM tbl_Documents"

Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)


If rs.RecordCount = 0 Then
    MsgBox "No Documents available!"
    Exit Sub
End If

rs.MoveFirst
Do Until rs.EOF = True
    strRowSource = strRowSource & rs!tbl_Documents.DocID & "," & rs!tbl_Document_Types.DocType & "," & rs!tbl_Documents.DocTypeID & "," & rs!tbl_Documents.DateReceived & "," & rs!tbl_Documents.LinkToFile & "," & rs!tbl_Documents.Comments & ";"
    rs.MoveNext
Loop

在Do Until循环期间,我得到的错误通常是“此集合中找不到项目”。我把手表放在我的数据库和记录集上,似乎两者都没有正确设置。我得到“操作不支持这种类型的对象。”在数据库对象的连接字段中。本质上,完全相同的代码用于我们拥有的许多其他Access数据库。不知道为什么这不会很好。

1 个答案:

答案 0 :(得分:0)

在我看来,您需要对代码进行一些安静的修改。正如@OverMind建议的那样,始终按原样声明变量。特别是库,以避免代码中的歧义。接下来,你的strSQL只包含一个表,但你的strRowSource有另一个表。所以你的strSQL应该改变。我不确定strRowSource是做什么的,但对我来说听起来像是ListBox或ComboBox的RowSource,在这种情况下,它有点令人困惑。无论如何你的代码应该是。

Dim db As DAO.Database, rs As DAO.Recordset
Dim strSQL As String, strRowSource As String

strSQL = "SELECT * FROM tbl_Documents INNER JOIN tbl_Document_Types ON tbl_Documents.DocID = tbl_Document_Types.DocTypeID;"

Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)

If rs.RecordCount = 0 Then
    MsgBox "No Documents available!"
    Exit Sub
End If

Do While Not rs.EOF
    strRowSource = strRowSource & rs!DocID & "," & rs!DocType & "," & rs!DocTypeID & "," & rs!DateReceived & "," & rs!LinkToFile & "," & rs!Comments & ";"
    rs.MoveNext
Loop

现在关于你的错误。 "此集合中未找到的项目" - 可能是因为您正在使用不属于记录集对象的其他字段。试试这个代码。祝好运。 :)