операция не разрешена, когда объект закрыт с помощью vb6 - PullRequest
2 голосов
/ 04 января 2012

У меня есть файл Excel, который возвращает данные из хранимой процедуры, она отлично работает, теперь я изменил хранимую процедуру на другую с теми же параметрами, что и у старой, но я получаю ошибку: "Операция не разрешена, когда объект закрыт », в цикле:« Делать, пока нет »rsData.EOF

Что происходит в мире:

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

1 Ответ

5 голосов
/ 04 января 2012

После долгой головной боли я обнаружил проблему.Как я уже сказал, это было что-то, связанное с SP, единственная разница между хорошим SP и плохим SP была в следующей строке:

SET NOCOUNT ON

Боже мой, это был корень ошибкипотому что, однажды добавленный к плохому SP, это сработало!

большое спасибо @Shane Wealti

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...