Имя: Пароль:
1C
1С v8
ODBC. RecordSet.Source не присваивается
0 DES
 
20.02.15
13:26
Почему
Connection = Новый COMОбъект("ADODB.Connection");
Connection.ConnectionString = "driver=Firebird/InterBase(r) driver; Dialect=3; CHARSET=NONE; Uid=SYSDBA;Pwd=masterkey;Dbname="+ПолеИмениФайла+";Client=gds32.dll";
Connection.ConnectionTimeOut    = 1200;
Connection.CursorLocation       = 3;
Попытка
Connection.Open(Connection.ConnectionString);
Сообщить("Соединение успешно установлено !!!");
Исключение
Сообщить("Невозможно установить соединение с Firebird:| "+ОписаниеОшибки());
КонецПопытки;
RecordSet = Новый COMОбъект("ADODB.RecordSet");
RecordSet.ActiveConnection = Connection;
RecordSet.CursorType = 3;

почему

RecordSet.Source = SQL;
не присваивается?
в отдладчике "" и выдает ошибку при
RecordSet.Open();
1 Jaap Vduul
 
20.02.15
13:39
Видимо, потому что Source может быть как строкой, так и ссылкой на ADODB.Command и 1цэ этот момент не может корректно разрулить (кстати, с ActiveConnection такая же неприглядная картина).
Используй вариант
RecordSet.Open(SQL);
2 DES
 
20.02.15
13:46
(1) в отладчике  разруливает как "строка"
3 Jaap Vduul
 
20.02.15
14:17
(2)
Потому что get_Sourse (т.е. в отладчике) - всегда строка.
А у set_Sourse (т.е. RecordSet.Source = SQL) уже два варианта.
4 DES
 
24.02.15
18:18
какие два?
тот же самый драйвер и код работают в 7.7
а 8 не понимает RecordSet.Source = SQL.
т.е. не ругается, но не выполняется.
хотя после выполнения там появляется текст SQL
5 Jaap Vduul
 
24.02.15
18:40
(4)
У COM объекта свойство представляется парой методов set_Свойство(для присваивания свойству значения) и get_Свойство(для получения значения свойства).
В данном случае у метода set_Sourse есть два варианта (два "перегруженных" метода в терминах ООП).

Вариант №1:
В качестве параметра в set_Sourse передаётся ссылка на ADODB.Command.
(работает везде)

Вариант №2:
В качестве параметра в set_Sourse передаётся строка.
(не работает в 1цэ 8)


ЗЫ. Как только 8 версия вышла я сразу на такое напоролся, только не Source, а с ActiveConnection.
6 DES
 
24.02.15
18:58
спс
7 Torquader
 
24.02.15
20:39
Проще SQL-запрос исполнять через Command, который уже RecordSet возвращает, а не наоборот.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.