Вызов хранимой процедуры
20.08.2010
12:26
#1
"Всем, здравствуйте!!!<br>Помогите разобраться, пытаюсь из внешней обработки (платформа 1С:Бухгалтерия 8.1) вызвать хранимую процедуру (MS SQL Server 2008). При попытке обратиться к результатам выдает ошибку, что объект закрыт. Пробовал вызывать без параметров (т.к. есть значения по умолчанию) - такая же проблема. Просматривал в дебагере свойства объекта RecordSet - есть поля со значением "Ошибка чтения". Запросы выполняю без проблем, а с хронимкой возникли проблемы. Помогите.<br><br>Параметры хранимки следующие:<br>ALTER PROCEDURE [dbo].[CR_Buh_Block_Otchet]<br>(<br>@us int = 1,<br>@login nvarchar(50) = 'SERVER\sasha5',<br>@serviceDate DateTime='01.01.2010',<br>@registerType int = -1, -- "0" - регистр "Рассчитанные услуги", "1" - регистр "Бухгалтерские документы"<br>@dateList varchar(max)='13.05.2010'<br><br>Вызов хранимки делаю так:<br><br>RecordSet = Новый COMОбъект("ADODB.RecordSet");<br>Command.ActiveConnection = Connection;<br>Command.CommandText = "CR_Buh_Block_Otchet";<br>Command.CommandType = 4;<br><br>adInteger = 3;<br>adVarChar = 200;<br>adDate = 7;<br>adParamInput = 1;<br><br>Param1 = Command.CreateParameter("@us", adInteger, adParamInput, 4, 1);<br>Command.Parameters.Append(Param1);<br>Param2 = Command.CreateParameter("@login", adVarChar, adParamInput, 50, "SMOLENSK\polyak_gg");<br>Command.Parameters.Append(Param2);<br>Param3 = Command.CreateParameter("@serviceDate", adDate, adParamInput, 4, "01.01.2010"); Command.Parameters.Append(Param3);<br>Param4 = Command.CreateParameter("@registerType", adInteger, adParamInput, 4, 1);<br>Command.Parameters.Append(Param4);<br>Param5 = Command.CreateParameter("@dateList", adVarChar, adParamInput, 500, "20100513");<br>Command.Parameters.Append(Param5);<br><br>RecordSet = Command.Execute();<br><br>Пока RecordSet.EOF() = 0 Цикл<br>счетчик = счетчик + 1;<br>Сообщить(счетчик );<br>RecordSet.MoveNext();<br>КонецЦикла;<br><br>Спасибо за помощь."
16.03.2012
15:58
#2
"<pre><br><br>RecordSet = Command.Execute(); </pre><br>Ошибка о соединеии в этой строке.<br>ActiveConnection - Определяет объект Connection, с которым связан данный объект Command. Значением этого свойства может быть и строка, содержащая ту же информацию, что и свойство ConnectionString объекта Connection. Попытка выполнить метод Execute объекта Command при незаданном свойстве ActiveConnection приведёт к ошибке. Назначение закрытого объекта Connection в качестве значения свойства ActiveConnection также вызовет ошибку (объект должен быть открыт). Закрытие объекта Connection, с которым связан объект Command, устанавливает свойство ActiveConnection в Nothing.<br> <br>Поменять<br><pre><br><br>Command.ActiveConnection = Connection; </pre><br>на<br><pre><br><br>Command.ActiveConnection = ConnectionString; </pre><br><br>На что ссылаются и чему равны переменные adInteger, adParamInput, adVarChar, adDate?<br> <br>p.s. Я реально запаздал с ответом, но лучше fix, чем empty."
Читают тему
(гостей: 1)