Ms access 仅显示一个结果的openrecordset

Ms access 仅显示一个结果的openrecordset,ms-access,vba,Ms Access,Vba,当我使用记录集从表中读取数据时,一切正常,recordcount函数会显示正确的数量,但是当我使用这个简单查询或任何查询时,我总是得到1作为记录计数 这就是它的工作原理 Option Compare Database Option Explicit Public Sub LoadQ2() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("test")'te

当我使用记录集从表中读取数据时,一切正常,recordcount函数会显示正确的数量,但是当我使用这个简单查询或任何查询时,我总是得到1作为记录计数

这就是它的工作原理

Option Compare Database
Option Explicit

Public Sub LoadQ2()

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("test")'test is the name of my table which contains 13 rows

With rs
    Debug.Print .RecordCount
   .Close
End With


Set db = Nothing
Set rs = Nothing

End Sub
这就是不起作用的地方

Option Compare Database
Option Explicit

Public Sub LoadQ2()

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

strSQL = "SELECT test.number_id FROM test"


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

With rs
    Debug.Print .RecordCount
   .Close
End With


Set db = Nothing
Set rs = Nothing

End Sub
我应该得到相同的结果与两个记录计数对吗??另外,我想查看调试中记录集中的行是否可以在调试窗口中打印记录集的内容???

。。。。找到了答案

在执行Debug.Print.recordcount之前,我添加了.MoveLast并获得了正确的recordcount数


看起来recordcount只是指在什么记录上,他不是多少记录要打印记录集的内容,可以执行以下两个选项之一

debug.print rs.fields(0) & ", " & rs.fields(1)


作为补充,您自己已经找到了答案:)

Dynaset数据类型(DAO记录集的默认值)在遍历其所有记录之前不会完全填充,因为需要在检查其实际拥有多少记录之前执行.MoveLast

我假设DAO只为recordcount返回1,这是一种预先检查记录集是否为空(例如recordcount>0)的简单方法,而无需经历在记录之间移动的麻烦

debug.print rs("ColumnNameHere") & ", " & rs("AnotherColumnName")