我有一个正在修改的应用程序。最初,有一块巨大的行内SQL执行来返回一些数据。由于请求更改,我已经将其放入一个存储过程中,该过程不仅仅是返回数据,现在正在尝试执行。这是我无法工作的代码:
Dim oConnCRS as CRS_Connection
Dim sSQL As String
Dim oRS_ReturnRecs As ADODB.Recordset
sSQL = "EXECUTE dbo.StoredProcedure @StartDate = '" & dStartDate & "', @EndDate ='" & dEndDate & "'"
Set oConnCRS = New CRS_Connection
Set oRS_ReturnRecs = New ADODB.Recordset
With oRS_ReturnRecs
.Open sSQL, oConnCRS.Connection, adOpenForwardOnly, adLockReadOnly, adCmdText
If .EOF Then
.Close
Me.MousePointer = vbDefault
MsgBox "No return file activity to report", vbExclamation + vbOKOnly, APP_NAME
Exit Sub
End If
如果我将sSQL更改为类似"从表的条件中选择列"的内容,它将正常工作。
存储过程是将一组信息加载到临时表中,对其进行修改,然后从临时表中选择所有记录。
我已经尝试在打开的情况下更改上的各种设置,但我仍然在上遇到错误
If .EOF then
错误为:"对象关闭时不允许操作"
CRS_Connection是一个对象,它包含数据库的所有连接信息,并且在新的实例化中自动打开连接。
我们非常感谢任何关于我们做错了什么的指导或建议。
新发现:
我在另一个应用程序上再次出现此问题。我创建了一个临时表,用数据填充它,然后从中进行选择。当我这样做时,我会遇到以前遇到的相同的关闭错误。
当我将select移除到表中或创建表时,它会毫无问题地执行。
在存储过程中创建临时表会导致VB6关闭连接,该怎么办?有解决办法吗?
我遇到了与您所描述的类似的问题。
在存储过程开始时添加SET NOCOUNT ON
解决了我的问题。
如果这不能解决问题,请提供更多建议:http://www.codeproject.com/Questions/414056/VB-Recordset-not-opening-with-stored-procedure