AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.05.2012, 19:37   #1  
Corel is offline
Corel
Участник
Ex AND Project
 
73 / 15 (1) ++
Регистрация: 19.04.2007
Ошибка с подключением через ODBC + глюк с работой через connection
Ситуация такая: на работающем приложении в 3.0 для одной обработки используется подключение через ODBC к своей же базе. По словам разработчика, заставить эту обработку работать через new connection() не вышло, а через ODBC всё ок.
Сейчас переношу это на DAX 2009, ни так ни так не выходит.
MS SQL 2008 R2
Подключение ODBC создаётся так:
X++:
static void testODBCConnection(Args _args)
{
    ODBCConnection con;
    LoginProperty   LP = new LoginProperty();
    ;
    LP.setServer("Server");
    LP.setDatabase("DB");
    LP.setOther(strfmt("Username=%1;Password=%2", "user", "pwd"));

    con = new ODBCConnection(LP);

}
Выдаётся ошибка: "[Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию".
Пароль и пользователь проверены. Вопрос с открытым паролем в коде пока что на втором месте после "заставить это работать". На клиентских машинах DSN создавать не хочется. На сервере DSN имеется, тестовое соединение проходит на ура, но LP.setDSN("DSN") даёт ту же картину.
Если я правильно понимаю, DSN можно вообще не иметь, он создаётся на время
подключения.

Но вообще, конечно, через ODBC к своей базе коннектиться не комильфо, поэтому пытаюсь подключиться через new connection(), но тут своя засада.

X++:
    stm = con.createStatement();
    cmd = "begin tran";
    new SqlStatementExecutePermission(cmd).assert();
    stm.executeUpdate(cmd);
    CodeAccessPermission::revertAssert();

    cmd = strfmt("insert LocksTable (purchid, transdate, blocked, dataareaid, recid) " +
               "values ('%1',getdate(),1,'%2', convert(int,@@dbts))", purchid, curext());
    new SqlStatementExecutePermission(cmd).assert();
    stm.executeUpdate(cmd);
    CodeAccessPermission::revertAssert();

/*
обработка
*/

    cmd = "rollback tran";
    new SqlStatementExecutePermission(cmd).assert(); 
    stm.executeUpdate(cmd); // <-- здесь вываливается ошибка SQL
    CodeAccessPermission::revertAssert();
После этого вылета наблюдается следующий глюк: запись в таблице LocksTable остаётся, но удалить её из обозревателя таблиц кнопочкой "удалить запись" не получается - после F5 она остаётся на месте. Запись удаляется только запросом Delete_from.

Есть идеи, что это может быть?

Последний раз редактировалось Corel; 15.05.2012 в 19:40.
За это сообщение автора поблагодарили: NataLee (1).
Теги
odbc, ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axilicious:IDMF Post Installation Issue : ODBC Connection Blog bot DAX Blogs 0 28.01.2011 23:14
Update ошибка в ODBC Oracle Link DAX: Программирование 2 03.12.2010 14:58
Ошибка с работой Business Connector через ISS. Dimonishe DAX: Программирование 2 01.08.2006 15:14
Чтение данных из SQL Server через ODBC. Не работает в 3-х звенке sukhanchik DAX: Программирование 7 30.05.2005 17:52
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 17:52.