ms-access - 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.moveFirst
and RS.moveLast
,但这不起作用。我认为这是因为打开的记录集实际上并不包含表中的所有记录。
提前致谢。
解决方案
我设法解决了这个问题,但我不知道为什么会这样。我没有创建一个新表并输入十条记录的值,而是使用插入查询将我想要的值从查询中放入表中。使用这个新表,它起作用了。
推荐阅读
- javascript - 退出时是否需要分离所有 Firestore 侦听器?
- python-3.x - 使用 Python pathlib 获取没有文件名的文件的绝对路径
- javascript - 通过调用一个 API 将文档插入到不同的集合中
- python - 例如,有没有办法在本地发送 SMTP 电子邮件而不是使用 gmail?
- javascript - 比较 2 个数组并删除项目
- c# - 从另一个类监听 PropertyChanged
- javascript - 如何使用 setInterval 以角度调用我的服务
- google-translate - 旧版谷歌翻译
- java - 如何通过java中的电子邮件从数据库发送数据(表)?
- php - 基于关系值的 Laravel 排序模型