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

时间:2014-08-28 17:34:34

标签: sql sql-server vb6 adodb

我有一个我正在修改的应用程序。最初,有一个巨大的在线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关闭连接?有解决方法吗?

1 个答案:

答案 0 :(得分:0)

我和你所描述的问题有类似的问题。

在存储过程开始时添加SET NOCOUNT ON解决了我的问题。

如果这不能解决问题,可以提供更多建议: http://www.codeproject.com/Questions/414056/VB-Recordset-not-opening-with-stored-procedure