为VB5辩解:VB处理数据库时求数据表记录总数的最…
2018-06-17 17:13:41来源:未知 阅读 ()
DimdbAsDatabase
DimrsAsRecordset
Setdb=OpenDatabase(App.Path&"\zzr.mdb")
Setrs=db.OpenRecordset("test")
Debug.Printrs.RecordCount
--------此例假设在应用程序目录下有一个名为"zzr.mdb"的数据库,而且它里边有一个名为"test"的表,此程序的目的就是求出该表中的记录的总数。此处用到的是"表"对象的RecordCount属性,这样用在一般性况下是正确的,但并不能保证在所有的情况下都能得出正确的结果,比如说表中的数据量很大,或者是数据库受到过什么损害等等。如果碰到这种情况,我们可以换一个角度来处理。请看下面的程序:
DimdbAsDatabase
DimrsAsRecordset
DimNumAsLong
Setdb=OpenDatabase(App.Path&"\zzr.mdb")
Setrs=db.OpenRecordset("test")
Num=0
rs.MoveFirst
DoWhileNotrs.EOF()
Num=Num 1
rs.MoveNext
Loop
Debug.PrintNum
--------这样,最后得到的Num即为正解结果,这种方法的思路是从表的开始处一直顺序走到结尾,就可以"数"出表中到底有多少条记录。这种方法看起来很笨,但是它却是一个相当准确的方法,大家不防可以试一下。
----再看笔者的说法:
----先看上面一行程序:Debug.Printrs.RecordCount,VB5在读取数据表时并非一次性将全部记录均读入内存(想想看如果有一个表,里面有一百万个记录甚至一亿个或更多,要想全部读入内存,你的机器能承受得了吗?),只是先读入一部分(在下认为这是VB的优异这处),recordset对象并非表的全部记录,只是已读入内存的部分,故用rs.recordcount得到的不是表的记录总数。
----再看上面程序的改良部份:
DoWhileNotrs.EOF()
Num=Num 1
rs.MoveNext
Loop
Debug.PrintNum
----在下用十万个记录的表对上面这段程序做了个测试,结果花了六分半钟(intel166,32M内存),如此的等待,阁下有耐心无?请看在下的对策:
----假设数据表已打开,用
rs.Recordset.MoveLast'将指针移到表的最后一笔记录
debug.printrs.Recordset.RecordCount
即可得出正确结果。
或者用下一种方法亦可
rs.Recordset.MoveLast
debug.printrs.Recordset.AbsolutePosition 1
'调用绝对位置,因vb的第一笔记录是由零算起,故要 1。->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:用VB实现队列播放MP3
- 在Windows98中使用VB5.0编程疑难一解 2018-06-17
- 用VB5.0从Recordset中打印列表 2018-06-17
- 基于Win95的VB5串口通信程序 2018-06-17
- 壓VB5.0嶄園辞方象垂才窮徨燕鯉 2018-06-17
- VB5.0中实现字体闪烁效果 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash