|
|
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 возвращает, а не наоборот.
|
|