Подключение к сторонней БД средствами ATLANTIS

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Solt
Сообщения: 4
Зарегистрирован: 13 авг 2014, 08:07

Подключение к сторонней БД средствами ATLANTIS

Сообщение Solt »

Добрый день.

Возникла необходимость извлечения информации из таблиц сторонней БД средствами Atlantis.
Но подключится к ней не получается. Может имеется подобный опыт у кого.

Заранее благодарю.
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Подключение к сторонней БД средствами ATLANTIS

Сообщение Den »

"Но подключится к ней не получается."

а как пробуете ?
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Подключение к сторонней БД средствами ATLANTIS

Сообщение RAJAH »

В таких случаях обычно советую использовать хранимые процедуры: в её коде доступны обращения к другим БД.
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Подключение к сторонней БД средствами ATLANTIS

Сообщение savov »

Доброго времен суток.
Не написано, какая база ( т.е. База Галактики и сторонняя созданы в одной СУБД?) У нас получалось вполне нормально обращаться к другой базе Галактики, но обе были Оракловые.
1. Создаем процедуру сначала в Галактике ( МОЖНО! в саппорте дать запрос SQL FUNCTION имя(параметры) : тип {})
2. Проверяем права и даем права.
3. В СУБД корректируем текст данной хранимой процедуры.
4. В Галактике используем созданную хранимую процедуру.

Пример кода vip

Код: Выделить всё

        //Заполняем ВТ
         stmt := sqlAllocStmt;
         sqlDropTmpTable('MyData'); // чистим временную таблицу
         sqlCreateTmpTable('Table MyData (katorgname: string, sale: double, groupgp: string, namemc: string, cpodr: comp, csoprdoc: comp);', ctmNormal); //создаем временную таблицу
         //Заполняем ВТ
        sqlExecStmt(stmt,'GETSALES('#39+String(GetDateAsPascalLongint(dtBegdate))+''#39+','#39+String(GetDateAsPascalLongint(dtFindate))+''#39+','#39+ UpCase ( UserName ) + '.MyData (fkatorgname, fsale, fgroupgp, fnamemc, fcpodr, fcsoprdoc)'#39+')'); // Getsales - имя хранимой процедуры с параметрами
        //Читаем ВТ
           sqlFreeStmt(stmt);
           stmt := sqlAllocStmt;
           sqlAddStr(StmtString,' select * from MyData');
          sqlPrepare ( stmt, StmtString );
          sqlExecute ( stmt );
          sqlFetchInto(stmt, tntOborotNota);
          sqlFreeStmt(stmt);
Solt
Сообщения: 4
Зарегистрирован: 13 авг 2014, 08:07

Re: Подключение к сторонней БД средствами ATLANTIS

Сообщение Solt »

В SQL создала процедуру. без входных параметров(обычная выборка). При использовании sqlExecStmt выдает ошибку 30006( Насколько поняла не видит процедуру) :-(
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Подключение к сторонней БД средствами ATLANTIS

Сообщение savov »

В SQL создала процедуру. без входных параметров(обычная выборка). При использовании sqlExecStmt выдает ошибку 30006( Насколько поняла не видит процедуру
Какая СУБД?
Зайти в СУБД, проверить наличие и правильность процедуры. Возможно, текст процедуры надо править. Если процедура есть, текст правильный, попробовать выполнить ее в СУБД ( не Галактикой). Далее по результату.
Проверить включен ли доступ к DSQL пользователю, от имени которого стартует процедура в Галактике, проверить, находится ли эта процедура в списке разрешенных для этого пользователя.
Solt
Сообщения: 4
Зарегистрирован: 13 авг 2014, 08:07

Re: Подключение к сторонней БД средствами ATLANTIS

Сообщение Solt »

В MS SQL процедура работает.
У пользователя DSQL включен (переключала для надежности), Процедуру регистрировала с помощью RegVipFuncProcMSSQL.BAT, но в Sapporte она не отражается :-( . Далее сделала проверку служебных объектов. Но это не помогло :-(
savov
Местный житель
Сообщения: 589
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Воронеж ОАО Верофарм. Воронеж

Re: Подключение к сторонней БД средствами ATLANTIS

Сообщение savov »

Каков был порядок создания процедуры?
Надо так.
1. В Supporte создаем процедуру . Именно в нем! Можно просто пустую, но с именем и параметрами.
2. Проверяем в supporte появление этой процедуры в закладке "права на хранимые процедуры" в модуле Права доступа. Даем права, если нет.
3. Идем в MS SQL, ищем процедуру там. Вносим текст.
4. Проверяем работоспособность в MS SQL
5. Проверяем работоспособность в Галактике.
Solt
Сообщения: 4
Зарегистрирован: 13 авг 2014, 08:07

Re: Подключение к сторонней БД средствами ATLANTIS

Сообщение Solt »

Savov, Спасибо :)
Процедуру создать получилось и при обращении не выдает ошибок. :)
Ответить