我真的被困住了。我的同事和我无法弄清楚为什么这个数据库不会连接到“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数据库。不知道为什么这不会很好。
答案 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
现在关于你的错误。 "此集合中未找到的项目" - 可能是因为您正在使用不属于记录集对象的其他字段。试试这个代码。祝好运。 :)