ADO 3704错误,不知道为什么

了缘 2004-12-11 02:35:22
Private Sub CmdQuery_Click()
Dim Rs As New ADODB.Recordset
Dim Conn As New ADODB.Connection
Conn.ConnectionTimeout = 600
Conn.CursorLocation = adUseServer
Conn.CommandTimeout = 600

Dim strSql As String
strConnString = "Provider=SQLOLEDB.1;Password=wecoo;Persist Security Info=True;User ID=sa;Initial Catalog=UDRP_app2;Data Source=UFSOFT3\sql1"
strSql = "exec dbo.s_proview_procsaleItemtype 2004"
' strSql = "select * from test"
Conn.Open strConnString

Rs.CursorLocation = adUseClient
' Rs.CursorType = adOpenStatic
Rs.Open strSql, Conn, adOpenStatic
' Set Rs = Conn.Execute("exec dbo.s_proview_procsaleItemtype 2004")

If Rs.EOF = False Then
Dim intI As Integer
intI = Rs.RecordCount
MsgBox intI
Set DataGrid.DataSource = Rs.DataSource
End If

Set Rs = Nothing
Set Conn = Nothing


End Sub


strSql = "exec dbo.s_proview_procsaleItemtype 2004"
' strSql = "select * from test"
如果换成下面的直接查询就没有问题,不知道为什么,求助,谢谢
...全文
87 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
了缘 2004-12-11
  • 打赏
  • 举报
回复
谢谢帮助,已经解决了,
解决方法,存储过程中加了一句,set nocount on
aohan 2004-12-11
  • 打赏
  • 举报
回复
你先这样解决,将你存储过程中的数据存到一个表中(我估计你内部是创建一个临时表或者只用了一条SELECT语句),然后再参该表进行绑定
了缘 2004-12-11
  • 打赏
  • 举报
回复
谢谢大家,希望大家来讨论
了缘 2004-12-11
  • 打赏
  • 举报
回复
是执行到If Rs.EOF = False Then就报错了,说对象已经关闭,不可以操作,
就是说RS已经关闭了,但是我没有执行关闭操作。
myhgyp 2004-12-11
  • 打赏
  • 举报
回复
把下面一段改一下试试:
If Rs.EOF = False Then
Dim intI As Integer
intI = Rs.RecordCount
MsgBox intI
Set DataGrid.DataSource = Rs '已改
DataGrid.refresh '再增加这一句
End If
aohan 2004-12-11
  • 打赏
  • 举报
回复


你用ADODC的方法试一下,应该没有问题。
了缘 2004-12-11
  • 打赏
  • 举报
回复
exec dbo.s_proview_procsaleItemtype 2004
是有记录集返回的

1,216

社区成员

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

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