0

当我使用记录集从表中读取时,一切正常,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

我应该用两个记录数得到相同的结果吧?另外我想看看我在调试记录集中的行是否可以在调试窗口中打印记录集的内容?

4

3 回答 3

1

要打印记录集的内容,您可以执行以下两个选项之一。

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

或者

debug.print rs("ColumnNameHere") & ", " & rs("AnotherColumnName")
于 2013-07-29T15:24:43.023 回答
0

只是为了补充你自己已经找到了答案:)

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

我认为 DAO 只是为记录计数返回 1,作为一种简单的方法来预先检查记录集是否为空(例如记录计数 > 0),而不必经历在记录之间移动的麻烦。

于 2013-07-29T22:24:39.867 回答
0

....找到了答案

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

看起来recordcount只是意味着他在什么记录而不是多少记录

于 2013-07-29T15:18:40.873 回答