跪求大虾 为什么recordset理想有记录但是recordset.recordCount为什么老是显示为-1??

wufayun 2005-04-26 08:59:43
Public Function executesql(ByVal sql As String, msgstring As String) As ADODB.Recordset
Dim conn As ADODB.connection
Dim rs As ADODB.Recordset
Dim stokens() As String
On Error GoTo executesql_error
stokens = Split(sql)
Set conn = New ADODB.connection
conn.Open Connectstring
If InStr("INSERT,DELETE,UPDATE", UCase$(stokens(0))) Then
conn.Execute sql
msgstring = stokens(0) & "query successful"
Else
Set rs = New ADODB.Recordset
rs.Open Trim$(sql), conn, adOpenKeyset, adLockOptimistic, 1
Set executesql = rs
msgstring = "查询到" & rs.RecordCount & "条记录"
Debug.Print rs.fieds(0)
End If
executesql_exit:
Set rs = Nothing
Set conn = Nothing
Exit Function
executesql_error:
msgstring = "查询错误!" & Err.Description
Resume executesql_exit

End Function


这个函数为什么recordset理想有记录但是recordset.recordCount为什么老是为-1
Debug.Print rs.fieds(0)能打印出这条记录第一个字段的值但是rs.recordset怎么老是为-1

我查了一下资料如下


使用 RecordCount 属性可确定 Recordset 对象中记录的数目。ADO 无法确定记录数时,或者如果提供者或游标类型不支持 RecordCount,则该属性返回 –1。读已关闭的 Recordset 上的 RecordCount 属性将产生错误。

如果 Recordset 对象支持近似定位或书签(即 Supports (adApproxPosition) 或 Supports (adBookmark) 各自返回 True),不管是否完全填充该值,该值将为 Recordset 中记录的精确数目。如果 Recordset 对象不支持近似定位,该属性可能由于必须对所有记录进行检索和计数以返回精确 RecordCount 值而严重消耗资源。

Recordset 对象的游标类型会影响是否能够确定记录的数目。对仅向前游标,RecordCount 属性将返回 -1,对静态或键集游标返回实际计数,对动态游标取决于数据源返回 -1 或实际计数。


但是从rs.Open Trim$(sql), conn, adOpenKeyset, adLockOptimistic, 1这条语句可以看出我的游标是“键集游标”




各位大虾帮忙解决一下谢谢
我的系统是xp不知道是不是跟系统有关系
...全文
185 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
ljhdi 2005-04-26
  • 打赏
  • 举报
回复
问题解决了记得要结帖
wufayun 2005-04-26
  • 打赏
  • 举报
回复
谢谢各位大虾!!1
这个论坛真好
强力顶!!!!
viena 2005-04-26
  • 打赏
  • 举报
回复
但客户端游标一般用仅向前游标或静态游标
viena 2005-04-26
  • 打赏
  • 举报
回复
设置连接的CursorLocation属性也可以,记录集会继承该设置(如果本身没有指定CursorLocation属性),看你的实际需要了
wufayun 2005-04-26
  • 打赏
  • 举报
回复
问题解决呢!!
谢谢各位大虾!!1
这个论坛真好
强力顶!!!!

viena 2005-04-26
  • 打赏
  • 举报
回复
服务器端游标的记录集不是保存在客户端内存中的,移动记录指针时需要到服务器(数据库)即时取数据的,当然也没有记录数的信息
viena 2005-04-26
  • 打赏
  • 举报
回复
在打开rs之前设置rs的CursorLocation属性
viena 2005-04-26
  • 打赏
  • 举报
回复
rs.CursorLocation
viena 2005-04-26
  • 打赏
  • 举报
回复
.CursorLocation = adUseClient
ljhdi 2005-04-26
  • 打赏
  • 举报
回复
conn.CursorLocation = adUseClient
ljhdi 2005-04-26
  • 打赏
  • 举报
回复
少了客户端数据游标
wufayun 2005-04-26
  • 打赏
  • 举报
回复
顶一下

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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