庞大资源库的计算机教程网站!
设为首页
加入收藏
总编信箱
投稿或申请专栏请先 [登 陆]
首页 操作系统 程序设计 图形图像 媒体动画 机械电子 WEB开发 数 据 库 办公系列 路由技术 网络原理 网络应用
认证考试 安全技术
首页>程序设计>VB专区>编程技巧>正文
资料搜索
Google搜索
Google
返回上级列表

推荐文章

快速保存网页中所有图片的方法
Windows中让光驱巧妙“隐身”技
防范非法用户入侵Win 2000/XP系
两款比较典型的ASP木马防范方法
有关表格边框的css语法整理
Windows XP中可以被禁用的服务
SQL Server导出导入数据方法
Javascript所有对象的属性的获
网页(HTML)中的特殊字符
与篮球共舞,尽显模式本色
QQ病毒的手工清除方法
Photoshop为极品美女打造性感睫
天衣无缝:IIS与PHP水火也相容
SQL Server存储过程编写和优化

为VB5辩解: VB处理数据库时求数据表记录总数的最佳方法

 作者:倪坚明    日期:2005-8-4 11:34:23
字号选择〖 〗/ 双击滚屏 单击停止   
---- ---- VB主要处理的是MDB格式的数据库,但就在这方面,它就偏偏出了差错,先看看下例:

Dim db As Database
Dim rs As Recordset
Set db = OpenDatabase(App.Path & "\zzr.mdb")
Set rs = db.OpenRecordset("test")
Debug.Print rs.RecordCount

---- ---- 此例假设在应用程序目录下有一个名为"zzr.mdb"的数据库,而且它里边有一个名为"test"的表,此程序的目的就是求出该表中的记录的总数。此处用到的是"表"对象的RecordCount属性,这样用在一般性况下是正确的,但并不能保证在所有的情况下都能得出正确的结果,比如说表中的数据量很大,或者是数据库受到过什么损害等等。如果碰到这种情况,我们可以换一个角度来处理。请看下面的程序:
Dim db As Database
Dim rs As Recordset
Dim Num As Long
Set db = OpenDatabase(App.Path & "\zzr.mdb")
Set rs = db.OpenRecordset("test")
Num = 0
rs.MoveFirst
Do While Not rs.EOF()
Num = Num + 1
rs.MoveNext
Loop
Debug.Print Num

---- ---- 这样,最后得到的Num即为正解结果,这种方法的思路是从表的开始处一直顺序走到结尾,就可以"数"出表中到底有多少条记录。这种方法看起来很笨,但是它却是一个相当准确的方法,大家不防可以试一下。
---- 再看笔者的说法:

---- 先看上面一行程序:Debug.Print rs.RecordCount,VB5在读取数据表时并非一次性将全部记录均读入内存(想想看如果有一个表,里面有一百万个记录甚至一亿个或更多,要想全部读入内存,你的机器能承受得了吗?),只是先读入一部分(在下认为这是VB的优异这处),recordset对象并非表的全部记录,只是已读入内存的部分,故用rs.recordcount得到的不是表的记录总数。

---- 再看上面程序的改良部份:


Do While Not rs.EOF()
Num = Num + 1
rs.MoveNext
Loop
Debug.Print Num

---- 在下用十万个记录的表对上面这段程序做了个测试,结果花了六分半钟(intel 166,32M内存),如此的等待,阁下有耐心无?请看在下的对策:
---- 假设数据表已打开,用

rs.Recordset.MoveLast '将指针移到表的最后一笔记录
debug.print rs.Recordset.RecordCount
即可得出正确结果。

或者用下一种方法亦可

rs.Recordset.MoveLast
debug.print rs.Recordset.AbsolutePosition+1
'调用绝对位置,因vb的第一笔记录是由零算起,故要+1。
上一篇:用 DAO 或 ADO 正确访问 Access 2000    下一篇:锁住数据库中的表  
[发送给好友]  [关闭窗口]  [返回顶部]   转载请注明来源:www.it00.com   
特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
责任编辑: 原点 投稿作者: 倪坚明
信息来源: 网络 录入时间: 2005-8-4 11:34:23
关于我们 - 广告服务 - 版权申明 - 网站地图 - 联系方式 - 总编信箱 - 会员投稿