|
|
Повторное подключение к внешнему источнику данных из 1С |
☑ |
|
0
bluekrab
03.11.16
✎
12:32
|
Добрый день. Делаю подключение к файлу .GDB из 1с. Первое подключение проходит нормально. При повторном появляется ошибка:Произошла исключительная ситуация (ADODB.Recordset): Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом.
Процедура подключения/отключения:
Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionString = "Driver=Firebird/InterBase(r) driver;" +
"Dbname=" + СокрЛП(Объект.ПутьКФайлу) + ";" +
"UID=" + СокрЛП(Объект.Пользователь) + ";" +
"PWD=" + СокрЛП(Объект.Пароль);
Попытка
Connection.Open();
Сообщить("Успешное подключение");
Исключение
Сообщить("Подключение к БД не установлено. Проверьте настройки подключения");
Connection = Неопределено;
КонецПопытки;
///////////////////////////////////////
RS = Новый COMОбъект("ADODB.Recordset");
RS.Open("Select produce.id From produce Where produce.isactive = 1" , Connection);
RS.MoveFirst();
Пока RS.EOF()=0 Цикл
Cообщить(RS.Fields("id").Value);
Попытка
RS.MoveNext();
Исключение
Прервать;
КонецПопытки;
КонецЦикла;
RS.Close();
RS = Неопределено;
Connection.Close();
Connection = Неопределено;
|
|
|
1
bluekrab
03.11.16
✎
12:51
|
ап
|
|
|
2
Живой Ископаемый
03.11.16
✎
12:54
|
а зачем второй раз подключаться?
так происходит всегда? даже если пыаешься подключиться например спустя 20 минут?
|
|
|
3
Живой Ископаемый
03.11.16
✎
12:55
|
а, потому что ты его обнуляешь зачем-то, ну ок...
|
|
|
4
Живой Ископаемый
03.11.16
✎
12:56
|
Еще раз, ошибка на этой строчке:
RS.Open("Select produce.id From produce Where produce.isactive = 1" , Connection);
?
|
|
|
5
Живой Ископаемый
03.11.16
✎
12:59
|
Раздерибань строку на такие:
Команда = Новый COMОбъект("ADODB.Command");
Команда.ActiveConnection = Connection;
Команда.CommandText = "Select produce.id From produce Where produce.isactive = 1";
НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");
Попытка
НаборЗаписей = Команда.Execute();
Исключение
ОписаниеОшибки = ОписаниеОшибки();
//Сообщить(ОписаниеОшибки);
//А.П. май 2012
ЗаписьЖурналаРегистрации("Paradox.НаборЗаписей.Исключение",УровеньЖурналаРегистрации.Ошибка,,,Команда.CommandText+Символы.ПС+ОписаниеОшибки,);
КонецПопытки;
И можно еще
Connection.ConnectionTimeOut =20;
Connection.CursorLocation = 1;
Connection.Mode=1;
Перед
Попытка
Connection.Open();
|
|
|
6
Живой Ископаемый
03.11.16
✎
13:03
|
но только чур, это не внешние источник данных как это принято в 1Совской терминологии.
|
|
|
7
bluekrab
03.11.16
✎
13:14
|
(6) прошу прощения за терминологию)
Да, ошибка в этой строке. Раздерибанить не получилось:
Произошла исключительная ситуация (ADODB.Recordset): Операция не допускается, если объект закрыт.
|
|
|
8
Живой Ископаемый
03.11.16
✎
15:17
|
А почему не получилось? Раздерибань
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший