09.01.2014, 14:35 | #1 |
Участник
|
Update Через ADO
Выручайте ребята, впервые не нашел примера решения моей проблемы!
Нужно проапдейтить записи напрямую в сторонней базе. Есть джоб но котором я провожу отладку кода, который должен выполнять обновление, а он не работает, точнее ругани никакой нет при выполнении кода, но тестовая запись не обновляется. Выборка для update правильная, с коннектом тоже проблем нет, по тем же параметрам соединения, получаю записи из данной БД. Вот код из джоба: X++: static void test(Args _args) { #PsiLogic #CCADO CCADOConnection conn; CCADOCommand cmd; str cs, sqlExp; ; new InteropPermission(InteropKind::ComInterop).assert(); cs = strFmt("Provider=OraOLEDB.Oracle;Password=%1;User Id=%2;Data Source=%3", #Password, #DbName, #ServiceName); sqlExp = @"UPDATE IFOUT_T SET AlarmTxt = '123' WHERE TRXID = '5472' AND IFSUBSYSNAM = 'DAX'"; if (cs) { conn = new CCADOConnection(); try { conn.Open(cs); } catch { warning(strfmt('Соединение с базой данных %1 не установлено', #DbName)); conn = null; } if (conn) { cmd = new CCADOCommand(); cmd.activeConnection(conn); cmd.commandText(sqlExp); cmd.commandType(#adCmdText); cmd.execute(); conn.close(); } } CodeAccessPermission::revertAssert(); } Последний раз редактировалось Kiot; 09.01.2014 в 14:40. |
|
09.01.2014, 14:53 | #2 |
Участник
|
а у пользователя базы назначения права на это есть?
Может он ридонли только. Там в консоли этот запрос прокатывает? |
|
09.01.2014, 15:27 | #3 |
Участник
|
Тоже склоняюсь к проблемам с привелегиями юзера.
Ради интереса: джоб выполняется ведь на клиенте, попробуйте ему указать модификатор X++: server |
|
|
За это сообщение автора поблагодарили: Kiot (1). |
09.01.2014, 17:03 | #4 |
Участник
|
Спасибо за подсказки. Коннект срабатывает, до базы добираюсь(выяснил методом научного тыка - ругается если ошибаешься в названии поля), а вот правится запись или нет и что вообще приходит на сервер БД будут завтра выяснять админы Оракла)
В консоли запрос работает нормально. |
|
10.01.2014, 08:09 | #5 |
Участник
|
Цитата:
Можете для проверки запустить код: X++: public static server void JobTest(Args _args) { str test = Session::isServer() ? "SERVER" : "CLIENT"; ; info(test); }
__________________
// no comments |
|
10.01.2014, 09:35 | #6 |
Участник
|
Цитата:
Джобы всегда выполняются на клиенте.
Джобы выполняются там, где нужно - если сделать менюИтем и указать в нем, где вызывать. Из АОТ да, только на клиенте |
|