我有一个我正在修改的应用程序。最初,有一个巨大的在线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更改为“从Table Where Condition中选择列”,它将正常工作。
存储过程正在将一堆信息加载到临时表中,对其进行修改,然后从临时表中选择所有记录。
我尝试在打开时更改各种设置,但我仍然在
上出错 If .EOF then
错误是:“对象关闭时不允许操作”
CRS_Connection是一个包含数据库所有连接信息的对象,在新的实例化中会自动打开连接。
非常感谢任何有关我们所做错事的指导或建议。
新发现:
我在另一个应用程序上再次遇到此问题。我创建一个临时表,用数据填充,然后从中选择。当我这样做时,我得到了我之前遇到的相同的关闭错误。
当我删除select into或create table时,它会毫无问题地执行。
如何在存储过程中创建临时表会导致VB6关闭连接?有解决方法吗?
答案 0 :(得分:0)
我和你所描述的问题有类似的问题。
在存储过程开始时添加SET NOCOUNT ON
解决了我的问题。
如果这不能解决问题,可以提供更多建议: http://www.codeproject.com/Questions/414056/VB-Recordset-not-opening-with-stored-procedure