首页 > 解决方案 > MS Access VBA .recordcount 在记录存在时返回 0,并且 debug.print 返回值

问题描述

我有一个包含 10 条记录和一个短文本字段的 Access 表。我正在使用 .recordcount 函数返回此表中的记录数。下面的代码:

Dim db as DAO.Database
Dim RS as DAO.Recordset
Dim recCount as Integer
Set db = CurrentDb
Set RS = db.OpenRecordset("Table Name")

RS.MoveFirst
RS.MoveLast
recCount = RS.recordcount

Debug.Print(recCount)

Dim i as Integer
i = 0
RS.MoveFirst
'Option one. Commented out when option two is active and vice verse
Do While i < 10
    Debug.Print(RS(i))
    i = i + 1
Loop

Do While i < 10
    Debug.print(RS![Only Field Name])
    i = i + 1
    RS.MoveNext
Loop

recCount 总是打印为 0。尝试打印记录集中的记录将只返回记录集中的第一个值,不返回任何其他值。读取第一条记录后,程序抛出错误“Item not found in collection”。我不确定是什么导致了这个错误,因为我对另一个 VBA 模块中的另一个表使用了完全相同的方法,效果很好。

我在其他地方查看了解决方案,我唯一能找到的是在打开后添加一个RS.moveFirstand RS.moveLast,但这不起作用。我认为这是因为打开的记录集实际上并不包含表中的所有记录。

提前致谢。

标签: ms-accessvbarecordset

解决方案


我设法解决了这个问题,但我不知道为什么会这样。我没有创建一个新表并输入十条记录的值,而是使用插入查询将我想要的值从查询中放入表中。使用这个新表,它起作用了。


推荐阅读