在过程中创建表或选择Into时执行存储过程时发生VB6数据库关闭错误



我有一个正在修改的应用程序。最初,有一块巨大的行内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

最新更新