对DAO记录集RecordCount属性的工作机制及其应用探讨-cspa
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


对DAO记录集RecordCount属性的工作机制及其应用探讨

发表时间:2014/8/4 14:04:11 评论(2) 浏览(10035)  评论 | 加入收藏 | 复制
   
摘 要:rst.RecordCount 是返回rst(DAO记录集)中已被存取(操作)过的记录数。对于动态记录集、 快照记录集, 或只向前记录集其工作机制是通过游标遍历一遍记录集中所有记录后,才能获得正确的记录数。
正 文:
     rst.RecordCount 是返回rstDAO记录集)中已被存取(操作)过的记录数。对于动态记录集、 快照记录集, 或只向前记录集其工作机制是通过游标遍历一遍记录集中所有记录后,才能获得正确的记录数。当你刚打开记录集时,如果记录集中无数据,则rst.RecordCount返回值为0,这是正确的。但如果记录集中有多条数据,因此时游标默认指向第一条记录,所以此时无论记录集中有多少条记录,均返回值为1。解决的办法是:打开记录集后,先用rst.MoveLast方法将游标移到最后一条记录,然后再用rst.RecordCount获得记录集中的记录数,此时就能返回正确的结果了。然而,有时当你不确定记录集中是否有数据时,在打开DAO记录集后直接rst.MoveLast,会产生错误,这是因为如果记录集中无数据,游标指针指向文件尾,rst.eof属性为真,不允许rst.MoveLast操作。因此为获取准确的记录数,编写代码时,在打开DAO记录集后,较为保险的做法是:先用rst.RecordCount判断记录集中是否有数据,如有再用rst.MoveLast 将游标指向记录集最后一条记录,最后再用rst.RecordCount获得正确的记录数。具体代码为:

Set rst = CurrentDb.OpenRecordset("tablename")

If rst.RecordCount > 0 Then             '先判断 rst中有无数据,如为0则无数据

    rst.MoveLast                               '如有数据则将游标指针移到最后一条记录

    lngNumber = rst.RecordCount       '获取记录集中的记录数

End If

注意:如要对打开的记录集做其他操作,不要忘记用rst.MoveFirst将游标指针移回第一条记录。


Access软件网交流QQ群(群号:198465573)
 
 相关文章
DAO记录集使用的一些技巧  【红尘如烟  2010/9/16】
Recordset记录集对象的属性和方法(一)  【宏鹏(转载)  2012/7/18】
【Access文章】ADO记录集说明  【漏蛧尐魚℡  2013/1/24】
通过TableDef对象的RecordCount属性获取表的总记录...  【金宇  2013/3/11】
【译文】如何用ADO代码实现窗体记录集的绑定  【周芳  2013/12/24】
用DAO记录集方法计算并修改表中多条记录多个字段值的示例  【牛魔王  2014/1/19】
常见问答
技术分类
相关资源
文章搜索
关于作者

cspa

文章分类

文章存档

友情链接