Показать сообщение отдельно
Старый 27.05.2011, 16:49   #7  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от AndyD Посмотреть сообщение
Делайте серверный класс.
Настройки будут храниться и браться с него (с сервера).
Не обязательно весь класс делать со свойством RunOn = Server. Достаточно только объект ODBCConnection сформировать на стороне сервера. А это можно сделать, например, через создание статического метода в классе Global.

При этом вовсе не обязательно использовать предварительно созданный DSN в Windows. Можно формировать строку соединения динамически. Кстати, в этом случае не важно где (на клиенте или на сервере будет создаваться соединение). А дополнительные реквизиты для формирования строки соединения можно хранить в настроечных таблицах Axapta.

Вот пример для подключения к MS SQL - серверу по имени сервера и базы данных

X++:
//Создание ODBCConnection с внешней базой данных по отношению к текущей (другой сервер)
static server OdbcConnection createOdbcConnection(Name _server, Name _dataBase)
{
    OdbcConnection  connectBase;
    LoginProperty   lp = new LoginProperty();
    str             strConnectionString;
    ;
    // Можно и в одну строку задать все параметры
//    strConnectionString = strFmt("DRIVER=SQL Server;SERVER=%1;DataBase=%2;Trusted_Connection=Yes",_server,_dataBase);
//    lp.setOther(strConnectionString);

    // Но для определенности задаю те параметры, которые возможно, явным образом
    lp.setDatabase(_dataBase);
    lp.setServer(_server);
    // Фигурные скобки не обязательны
    lp.setOther("DRIVER={SQL Server};Trusted_Connection=Yes");
    connectBase = new OdbcConnection(LP);

    return connectBase;
}