新手请教关于recordset 的返回记录数问题,谢谢大家!

HardThink 2005-07-14 02:01:57
前面略
读某表(记录较多)采用如下方法能够或者RowCount 值
rs.Open sql, sqlConn, adOpenKeyset, adLockReadOnly
'数据填充
If Not rs.EOF Then
rs.MoveLast
rs.MoveFirst
RowCount = rs.RecordCount
Else
RowCount = 0
End If
采用如下方法
rs.Open sql, sqlConn, adOpenKeyset, adLockReadOnly
'数据填充
RowCount = rs.RecordCount
End If
RowCount=-1 这是为什么?谢谢大家!
...全文
298 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
null1027 2005-07-15
  • 打赏
  • 举报
回复
返回来看, 个人觉得 MagicianLiu(魔术师·刘) 的做法算是比较好的
wojiudaofen 2005-07-14
  • 打赏
  • 举报
回复
楼上的做法也太奢侈了吧。
toumingkongjian 2005-07-14
  • 打赏
  • 举报
回复
可以这样:
Dim count As Integer
Do Until rs.EOF
count = count + 1
rs.MoveNext
Loop
End Sub
MagicianLiu 2005-07-14
  • 打赏
  • 举报
回复
上面代码不适合AC数据库
MagicianLiu 2005-07-14
  • 打赏
  • 举报
回复
只有静态游标或键集游标可以返回记录个数,即使是这两个游标,rs.RecordCount也会受其他影响(例如锁)不一定能返回个数。
不能信任rs.RecordCount的返回结果。如果需要的话。
例如:pubs数据库里的Authors表
rs.open "select count(*) from Authors select * from Authors",con,adOpenKeyset, adLockReadOnly

Rows=rs(0)
Set rs=rs.NextRecordset

wojiudaofen 2005-07-14
  • 打赏
  • 举报
回复
上面那句是错的,忽略不计。
wojiudaofen 2005-07-14
  • 打赏
  • 举报
回复
adLockReadOnly这个参数造成的。
wojiudaofen 2005-07-14
  • 打赏
  • 举报
回复
adOpenKeyset?应该不会呀,你用的是adOpenDynamic吧,动态游标倒是会返回-1。
daisy8675 2005-07-14
  • 打赏
  • 举报
回复
sqlConn.CursorLocation = adUseClient

rs.Open sql, sqlConn, 3,3
null1027 2005-07-14
  • 打赏
  • 举报
回复
-1 就是说vb不知道有多少行

rs.Open sql, sqlConn, adOpenKeyset, adLockReadOnly
这行语句后面跟的参数是很有区别的,你把adOpenKeyset换一下,
cnlyh 2005-07-14
  • 打赏
  • 举报
回复
在建立数据库连接的地方加这么一句
sqlConn.CursorLocation = adUseClient
就可以了。

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧