You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB6调用SQL Server存储过程,RecordCount返回-1但实际有2条记录

VB6调用SQL Server存储过程RecordCount返回-1的解决办法

问题原因

你遇到的RecordCount返回-1,是因为ADODB.Command.Execute方法默认返回仅向前游标(adOpenForwardOnly),这种游标类型不支持RecordCount属性,所以会返回-1。但RecordNumber变量值正确,说明记录集确实包含2条数据,只是游标限制导致无法直接获取总数。

解决方法

方法一:通过Recordset.Open指定游标类型

替换原代码中Set TempRS = ACmd.Execute(RecordNumber)这一行,改用Recordset.Open方法并明确指定支持RecordCount的游标类型(比如adOpenStatic静态游标):

Set TempRS = New ADODB.Recordset
' 指定静态游标和只读锁定,配合已设置的客户端游标(adUseClient)可正确获取RecordCount
TempRS.Open ACmd, , adOpenStatic, adLockReadOnly

方法二:转换已获取记录集的游标类型

如果坚持使用Execute方法,可在获取记录集后修改游标类型(兼容性稍差,建议优先用方法一):

Set TempRS = ACmd.Execute(RecordNumber)
' 将游标转换为静态类型以支持RecordCount
TempRS.CursorType = adOpenStatic

补充说明

  • 你已经设置了cnAdoDB.CursorLocation = adUseClient(客户端游标),这和静态游标配合可以完美支持RecordCount属性。
  • 即便RecordCount返回-1,记录集也并非为空,你依然可以通过MoveNext等方法遍历所有记录;只有当需要直接获取记录总数时,才需要调整游标类型。

内容的提问来源于stack exchange,提问作者Fabio Daini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 09:50:43