openrecordset只显示一个结果

时间:2013-07-29 15:11:15

标签: vba ms-access 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")'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

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

....找到了答案

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

看起来记录计数只意味着他记录了多少记录

答案 2 :(得分:0)

只是为了补充,因为你已经找到了答案:)

动态数据类型(DAO记录集的默认值)在完成所有记录之前不会完全填充 - 因为需要在检查实际拥有的记录数之前执行.MoveLast。

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