К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

v8.2 Внешний источник данных - таблицы Oracle

Гость
0 - 21.06.2013 - 12:24
Добален Внешний источник данных – несколько таблиц Oracle (строка подключения - "Driver={Microsoft ODBC for Oracle**;Server="+тнс+";Uid=”+юзер+”;Pwd="+пароль)
Подключаемся, все ок.

Запрос1:

ВЫБРАТЬ
| Т1.П11,
| Т1.П12,
| …
|ИЗ
| ВнешнийИсточникДанных.ВнешнийИсточник1.Таблица.Т1 КАК Т1
|ГДЕ
|Т1.П1= &парам1
|И …

Запрос1 отрабатывает на Ура.

Усложняем запрос, добавляя еще одну табличку.
Запрос2:

ВЫБРАТЬ
| Т1.П11,
| Т1.П12,
| Т2.П21,
| …
|ИЗ
| ВнешнийИсточникДанных.ВнешнийИсточник1.Таблица.Т1 КАК Т1
| ЛЕВОЕ СОЕДИНЕНИЕ

|ВнешнийИсточникДанных.ВнешнийИсточник1.Таблица.Т2 КАК Т2
| ПО Т1.П11 = Т2.П21 И Т1.П12 = Т2.П21
|ГДЕ
|Т1.П1= &парам1
|И …

Поучаю ошибку:

{Обработка.ПроверкаЗагрузкиНакладных.Форма.Форма.Ф орма(92)**: Ошибка при вызове метода контекста (Выполнить)
ТЗ = Запрос.Выполнить().Выгрузить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: NA000
Номер ошибки: 928
Описание: [Microsoft][ODBC driver for Oracle][Oracle]ORA-00928: отсутствует ключевое слово SELECT

В чем секрет?



1 - 21.06.2013 - 12:42
Попробуй сперва в пакетном запросе данные из внешних источников закинуть во временные таблицы, а потом уже их соединять.
PLSQL в интертрепации Оракла имеет недольшие диалектные отличия от T-SQL от Микрософта.
Гость
2 - 21.06.2013 - 13:00
bma1, внешний источник данных и временная таблица - не совместимы. Выдается ошибка. Об этом же пишет народ, гуглила. Ну и пробовала. Забыла как то сообщение об ошибке звучит.
Гость
3 - 21.06.2013 - 13:04
Можно чз ADODB сделать. Одну из обоработок так и реализовала. Просто хотелось использовать Внешние источники данных. Нагляднее показалось. Впечатление, что 1С как-то криво преобразует строку запроса.
4 - 21.06.2013 - 13:13
2(2) А если по тупому, одним запросом получить данные и выгрузить результат в таблицу значений, а во вотором запросе ее загрузить?
5 - 21.06.2013 - 13:14
4+ в смысле через запрос.Выполнить().Выгрузить()
6 - 21.06.2013 - 13:16
Если у тебя в тексте запроса нет ошибок, то всё должно работать.
7 - 21.06.2013 - 13:30
Попробуй создать запрос конструктором запросов.
Гость
8 - 21.06.2013 - 13:51
(5) bma1, ага, я думала об этом варианте уже)) Запрос к одиночной табличке внешнего источника в ТЗ1, еще один - к ТЗ2. потом запрос к этим ТЗ...

(6) В запросе ошибок по идее нет. Делала с помощью конструктора.
Хотя я уже в сомнении. Накидала отчет, запрос тот же с помощью конструктора. При запуске выдает:

Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанных1"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 0
Описание: [Microsoft][ODBC driver for Oracle]Ошибка синтаксиса или нарушение прав доступа

Блин, ну не знаю где в таком простейшем запросе могла закрасться синтаксическая ошибка. не верю!))
Гость
9 - 21.06.2013 - 13:55
о! а не может, дело быть в неуточнении схемы, т.е.при обращении к табличкам оракла надо перед ней, таблицей, еще схему прописать чз точку... хотя в источник же уже эти таблицы попали и 1С их видит, значит дело не в этом
Гость
10 - 21.06.2013 - 14:02
(5) с ТЗ наверное вариант в моем случае не очень, т.к. реальный запрос в себе соединяет 4 таблички. неудобно получится. текста много... но для 2х сойдет ;)
11 - 21.06.2013 - 14:30
8-awinter >Посмотри в тех.журнале какой запрос уходит в одбс драйвер.
Если запрос корректный, то проблема в одбс, попробуй через родной оракловский драйвер подключиться.
Гость
12 - 21.06.2013 - 14:55
Billi, спасибо, в пн гляну! домой пора бежать)
как поняла, его еще подключить надо. Ни разу не пользовала.


К списку вопросов






Copyright ©, Все права защищены