Запуск процедуры SQL из Excel - VB
Формулировка задачи:
Всем здравствуйте! Не получается запустить процедуру(в приложении) SQL из Excel. процедуру запускаю след. образом:
Set prPubs = New ADODB.Command
With prPubs
.ActiveConnection = cnPubs
.CommandText = "PrcGen_Select3"
.CommandType = adCmdStoredProc
.NamedParameters = True
.Parameters.Append .CreateParameter("@Mode", adInteger, adParamInput, 3, 106)
.Parameters.Append .CreateParameter("@DealID", adBigInt, adParamInput, 12, 940000010519#)
.Parameters.Append .CreateParameter("@InstitutionID", adBigInt, adParamInput, 1, 0)
.Parameters.Append .CreateParameter("@DateCurrent", adDate, adParamInput, , #10/18/2007#)
.Parameters.Append .CreateParameter("@DateEnd", adDate, adParamInput, , #7/10/2008#)
.Parameters.Append .CreateParameter("@RefreshMode", adInteger, adParamInput, 1, 1)
.Parameters.Append .CreateParameter("@FullMode", adInteger, adParamInput, 1, 0)
.Parameters.Append .CreateParameter("@RestMode", adInteger, adParamInput, 1, -1)
.Parameters.Append .CreateParameter("@MCMode", adInteger, adParamInput, 1, 0)
.Parameters.Append .CreateParameter("@SortMode", adInteger, adParamInput, 1, 1)
Set rsPubs = .Execute
End With
' Копирование записи в ячейку A1 на листе Sheet1.
Лист1.Range("A1").CopyFromRecordset rsPubs
Ругается на последней строчке, "run time error '3704' Операция недопускается, если объект закрыт". По отладчику видно, что результат выполнения процедуры нулевой (в отладчике смотрю rsPubs, fields, значение counts = 0). Если же захожу в queryAnalyzer, то эта процедура с этими же параметрами выдает мне данные. Параметры передаются процедуре верно, проверял каждый по отдельности (в процеруде есть тип dsidentifier его можно передавать процедуре как adBigInt, проверял). Я с ADO не знаком, подскажите пожалуйста, где "копать" :) . Заранее благодарен за помощь.
Set prPubs = New ADODB.Command
With prPubs
.ActiveConnection = cnPubs
.CommandText = "PrcGen_Select3"
.CommandType = adCmdStoredProc
.NamedParameters = True
.Parameters.Append .CreateParameter("@Mode", adInteger, adParamInput, 3, 106)
.Parameters.Append .CreateParameter("@DealID", adBigInt, adParamInput, 12, 940000010519#)
.Parameters.Append .CreateParameter("@InstitutionID", adBigInt, adParamInput, 1, 0)
.Parameters.Append .CreateParameter("@DateCurrent", adDate, adParamInput, , #10/18/2007#)
.Parameters.Append .CreateParameter("@DateEnd", adDate, adParamInput, , #7/10/2008#)
.Parameters.Append .CreateParameter("@RefreshMode", adInteger, adParamInput, 1, 1)
.Parameters.Append .CreateParameter("@FullMode", adInteger, adParamInput, 1, 0)
.Parameters.Append .CreateParameter("@RestMode", adInteger, adParamInput, 1, -1)
.Parameters.Append .CreateParameter("@MCMode", adInteger, adParamInput, 1, 0)
.Parameters.Append .CreateParameter("@SortMode", adInteger, adParamInput, 1, 1)
Set rsPubs = .Execute
End With
' Копирование записи в ячейку A1 на листе Sheet1.
Лист1.Range("A1").CopyFromRecordset rsPubs
Ругается на последней строчке, "run time error '3704' Операция недопускается, если объект закрыт". По отладчику видно, что результат выполнения процедуры нулевой (в отладчике смотрю rsPubs, fields, значение counts = 0). Если же захожу в queryAnalyzer, то эта процедура с этими же параметрами выдает мне данные. Параметры передаются процедуре верно, проверял каждый по отдельности (в процеруде есть тип dsidentifier его можно передавать процедуре как adBigInt, проверял). Я с ADO не знаком, подскажите пожалуйста, где "копать" :) . Заранее благодарен за помощь.
Решение задачи: «Запуск процедуры SQL из Excel»
textual
Листинг программы
<font color="blue">Set</font> rs = rs.<font color="blue">Next</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д