VB6中遇到的ADO和DLL问题,请不吝指点!
ADO.Recordset.recordcount属性为何总是-1,如何得到记录集中确切的纪录数,前提
是不用循环计数的方法,并且该纪录要可编辑。
如何用VB创建一个DLL,它可以不用声明一个对象就能调用其中的函数,即该函数不是作为对象的方法使用。
问题点数:15、回复次数:11Top
1 楼suhu(zym)回复于 2001-05-15 15:16:00 得分 0
if ado.recordset.eof=false or ado.recordset.bof=false then
ado.recordset.movelast
debug ado.recordset.recodcount
end if
Top
2 楼tele(tele)回复于 2001-05-15 15:22:00 得分 0
rsRms.Open strSql, connRms, adOpenStatic, adLockReadOnly
用静态方式打开adOpenStaticTop
3 楼jafi(胖猫先生)回复于 2001-05-15 15:35:00 得分 0
动态的也可以
假设connection为gcn,recordset变量为rs,sql语句为strsql(string型)
则
sql="select * from table"
set rs=gcn.execute(strsql)
然后 你看一下rs.recordcount是多少,(如果查询结果为0条记录,才返回-1,否则是多少返回多少)Top
4 楼hzh_wen_x(风之孔雀)回复于 2001-05-15 15:48:00 得分 0
返回值为-1,表示你打开数据库方式有问题!Top
5 楼playyuer(退休干部 卧鼠藏虫)回复于 2001-05-15 15:50:00 得分 10
1.rsRms.Open strSql, connRms,adOpenKeyset,adLockOptimistic '键集方式打开即可
2.将 Class 的 Instancing 属性设为: 6 - GlobalMultiUse 表示这个类的各种属性和方法可以象简单的全局函数那样被调用。该类的实例不需要显式创建,因为它会自动创建。 Top
6 楼ninglng(甯灵)回复于 2001-05-15 16:30:00 得分 0
程序开头加上
recordset.MoveLast
recordset.MoveFirst
Top
7 楼eastxiang(飄)回复于 2001-05-15 17:09:00 得分 0
set rs=db.execute("select count(*) as records from Table")
recordCount=rs.field("records")
绝对正确!Top
8 楼yangsaibing()回复于 2001-05-15 17:19:00 得分 5
试一试下面这段代码:
Dim Con As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Con.Open "conOffice", "uid", "pwd"
Rs.LockType = adLockOptimistic
Rs.CursorType = adOpenKeyset
Rs.Open "eis_user.city", Con, adOpenKeyset
MsgBox Rs.RecordCount
不过,使用RecordCount时,如果表里的数据量太大,有可能会取回一个大致的数据,而不是精确的数据,即使打开记录后用到了MoveFirst以及MoveLast。我曾经遇到过。
Top
9 楼chengduliuhao(刘浩)回复于 2001-05-15 18:11:00 得分 0
设置cn.CursorLocation = adUseClient Top
10 楼dave_ying(dave_ying)回复于 2001-05-16 10:04:00 得分 0
你的数据表里有没有创建主键Top




