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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.06.2013, 10:23   #1  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Регистрация: 22.11.2007
Обертка для работы со сторонней бд (с поддержкой контенеров)
SharedProject_IAU_SQL (1).xpo - проект
IAU.rar - dll

Можно без dll, тогда не перехватить сообщения от sql. чтобы все работало зайти в места поменять одноименные методы, класса

метод nmExecuteNonQuery - sqlCommandForEx.ExecuteNonQuery(); на sqlCommand.ExecuteNonQuery();

Описание краткое
n - net
p - property
s - set
g - get
m - method

nps - net property Set
npg - net property Get
nm - net method

Вопрос еще такой, как лучше делать обертках, наследовать классы или без наследования.
Если наследовать тогда можно избежать методов которые работают с net классами, но тогда нужно следить за инициализацией всех объектов. Если не наследовать то есть методы которые принимают и возвращают net классы.

Последний раз редактировалось Kainix; 17.06.2013 в 10:28.
За это сообщение автора поблагодарили: raz (5).
Старый 17.06.2013, 10:36   #2  
Kainix is offline
Kainix
Участник
 
47 / 96 (4) ++++
Регистрация: 22.11.2007
пример использования. Выбор и запись в таблицу, состоящую из 2х полей RefRecId int64(bigint) и BinData container(image).
Для доступа к конкретным полям нужна обертка для System.Data.DataSet

X++:
static void IAU_Connection(Args _args)
{
    SysSqlConnection                    sysSqlConnection;
    SysSqlCommand                       SysSqlCommand;
    SysSqlConnectionStringBuilder       sysSqlStringBuilder;
    SysSqlConnectionTable               sysSqlConnectionTable;
    SysDataRowCollection                sysDataRowCollection;
    SysDataRow                          sysDataRow;
    SysSqlDataReader                    sysSqlExecuteReader;
    
    System.Exception                    e;
    ;
    try
    {
        sysSqlStringBuilder = new SysSqlConnectionStringBuilder();

        sysSqlStringBuilder.npsServer('');
        sysSqlStringBuilder.npsDataBase('');
        sysSqlStringBuilder.npsUserName('');
        sysSqlStringBuilder.npsUserPassword('');

        sysSqlConnection = new SysSqlConnection(sysSqlStringBuilder.npgConnectionString());
        SysSqlCommand = sysSqlConnection.sysSqlCommand();

        SysSqlCommand.npsCommandText("SELECT * from Table where RefrecId = @RefRecId");
        SysSqlCommand.sysSqlParameterCollection().addSysSqlParameter("@RefRecId", 5637374403);
        sysSqlExecuteReader = SysSqlCommand.sysSqlExecuteReader();
        sysSqlExecuteReader.nmRead();

        if(sysSqlExecuteReader.npgHasRows())
        {
            sysSqlExecuteReader.nmClose();
            SysSqlCommand = sysSqlConnection.sysSqlCommand();
            SysSqlCommand.npsCommandText("Update Table set binData = @BinData where RefrecId = @RefRecId");
            SysSqlCommand.sysSqlParameterCollection().addSysSqlParameter("@RefRecId", 5637374403);
            SysSqlCommand.sysSqlParameterCollection().addSysSqlParameter("@BinData",  connull());
            SysSqlCommand.nmExecuteNonQuery();

        }
    }
    catch(Exception::CLRError)
    {
        e = CLRInterop::getLastException();
        if(e)
        {
           while(e)
            {
                info(e.get_Message());
                e = e.get_InnerException();
            }
        }
        e = SysSqlCommand.clrSqlExeption();
        if(e)
        {
           while(e)
            {
                info(e.get_Message());
                e = e.get_InnerException();
            }
        }
        else
        {
            e = SysSqlCommand.clrExeption();
            if(e)
            {
               while(e)
                {
                    info(e.get_Message());
                    e = e.get_InnerException();
                }
            }
        }
    }
}

Последний раз редактировалось Kainix; 17.06.2013 в 10:40.
Теги
ado, внешняя база

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Взаимодействие с Excel через .NET (семейство классов SysExcel) gl00mie DAX: Программирование 102 11.08.2022 17:09
Ошибка с подключением через ODBC + глюк с работой через connection Corel DAX: Программирование 8 17.05.2012 11:58
Работа с Excel через COM нестабильна на x64 Максимка DAX: Программирование 6 27.01.2012 12:52
работа 1С из Аксапты через COM _scorp_ DAX: Программирование 7 22.08.2008 15:45
Работа с обычными отчетами через Enterprise Portal OliaM DAX: Программирование 0 17.01.2005 16:53

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

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

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