0
ВежливаяТварь
29.08.12
✎
11:34
|
Добрый день. Уже второй день мучаюсь с доступом из 1с в SQl, некоторых успехов конечно достиг, но вот при вытягивании результата запроса с помощью recordset выдаёт ошибку
{Форма.Форма.Форма(973)}: Ошибка при вызове метода контекста (EOF): Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт. не могли бы вы подсказать как справится с этой проблемой. Сам текст запроса в sql работает и возвращает результат.
Сам кусок кода:
ТекстЗапроса="exec dbo.swra_Sales_Desktop @Date_From="+"'"+Формат(ДатаНачалаПроверки,"ДФ=ггггММдд")+"', @Date_To="+"'"+Формат(ДатаКонцаПроверки,"ДФ=ггггММдд")+"'";
ТаблицаЗагрузки= Новый ТаблицаЗначений;
ТаблицаЗагрузки.Колонки.Добавить("Поле");
ServerName=СокрЛП("192.168.2.56"); //имя или IP-адрес сервера
DSN=СокрЛП("RB_ATS"); //имя базы данных
UID=СокрЛП("sa"); //логин пользователя
PWD=СокрЛП("SW_Desktop"); //пароль
ConnectString="Provider=SQLOLEDB;Data Source="+ServerName+";DatabaseName="+DSN+";Initial Catalog="+DSN+";UID="+UID+";PWD="+PWD;
Соединение=Новый COMОбъект("ADODB.Connection");
Соединение.ConnectionTimeOut=600;
Попытка
Соединение.Open(ConnectString);
Исключение
Предупреждение("Не удалось соединиться с базой данных!");
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
Cmd=Новый COMОбъект("ADODB.Command");
Rs=Новый COMОбъект("ADODB.RecordSet");
Cmd.ActiveConnection=Соединение;
Cmd.CommandTimeOut=600;
Cmd.CommandType=1; //запрос на языке SQL
Cmd.Commandtext=СокрЛП(ТекстЗапроса);
Попытка
Rs.ActiveConnection=Соединение;
Rs=Cmd.Execute();
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
КоличествоПолей=Rs.Fields.Count();
Попытка
Пока Rs.EOF()=0 Цикл
НоваяСтрока = ТаблицаЗагрузки.Добавить();
Для i=0 по КоличествоПолей-1 Цикл
НоваяСтрока.Поле = СокрЛП(Rs.Fields(i).Value);
КонецЦикла;
Rs.MoveNext();
КонецЦикла;
Исключение
Сообщить(ОписаниеОшибки());
Возврат Неопределено;
КонецПопытки;
Rs.Close();
Соединение.Close();
Возврат ТаблицаЗагрузки;
|
|