2012-01-03 89 views
2

我有一个从存储过程中获取数据的excel文件,它工作得很完美,现在我已经用另一个存储过程改变了存储过程,一个,但我得到一个错误:“当对象被关闭的操作是不允许的”,在循环:你虽然不是rsData.EOF当使用vb6关闭对象时不允许操作

世界到底是怎么发生的事情:

Set dbConnection = New ADODB.Connection 
dbConnection.ConnectionString = connStr 
dbConnection.ConnectionTimeout = 60 
dbConnection.Open 

Set Cmd = New ADODB.Command 
Cmd.CommandType = ADODB.CommandTypeEnum.adCmdStoredProc 
Cmd.ActiveConnection = dbConnection 
Dim myrealenddate As Date 

'Create 2 output parameters 
Set pm1 = Cmd.CreateParameter("@DateIni", adDBDate, adParamInput, 15, CDate(Sheet1.TextBoxfechainiG)) 
Set pm2 = Cmd.CreateParameter("@DateEnd", adDBDate, adParamInput, 15, CDate(Sheet1.TextBoxfechaendG)) 

'Append the output parameters to command object 
Cmd.Parameters.Append pm1 
Cmd.Parameters.Append pm2 
Cmd.CommandText = "spProductionReportByDate" 
'Cmd.CommandText = "sp_Report_Recv_Metrics" 

Set rsData = New ADODB.Recordset 
Set rsData.Source = Cmd 
rsData.Open 

I = 4 
Do While Not rsData.EOF 
    I = I + 1 
    Sheet1.Range("A" & I).Value = rsData(0) 
    Sheet1.Range("B" & I).Value = rsData(1) 
    Sheet1.Range("C" & I).Value = rsData(2) 
    Sheet1.Range("D" & I).Value = rsData(3) 
    Sheet1.Range("E" & I).Value = rsData(4) 
    Sheet1.Range("F" & I).Value = rsData(5) 
    Sheet1.Range("G" & I).Value = rsData(6) 
    Sheet1.Range("H" & I).Value = rsData(7) 
    rsData.MoveNext 
Loop 
rsData.Close 
dbConnection.Close 
+0

显然'rsData'从未打开。 – 2012-01-03 20:29:30

+0

确实是这样的原因,但是如何,rsData.Open – Somebody 2012-01-03 20:35:16

+0

rsData.Open可能是错误的。找出错误并更新您的问题。 – 2012-01-03 20:36:29

回答

5

经过漫长的头痛后,我发现了这个问题。就像我说的,这是一件与SP的关系,良好的SP和不良SP之间的唯一区别是这条线:

SET NOCOUNT ON

我的上帝,这是错误的根源,一旦加到坏SP,它的工作!

非常感谢@Shane Wealti

相关问题