php mdb 总数,VB求数据表记录总数的方法

df4e906cb336bf98c25b7e1c98676cf7.png

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。

2829f2ca24f0d0090cbba57f30759f23.png

VB求数据表记录总数的方法.doc

下载Word文档到电脑,方便收藏和打印[全文共1023字]

编辑推荐:

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

8b95f2eb3d3f7ce4dc3bf1178c74941e.png

下载Word文档

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值