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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.05.2010, 16:45   #1  
Pudd is offline
Pudd
Участник
 
34 / 10 (1) +
Регистрация: 31.03.2010
Работа FireBird(FDB) в AX 2009
Собственно интересуют варианты как можно организовать взаимодействие между таблицами из Fdb базы с аксаптовскими таблицами в обе стороны т е как на запись та и на чтение из обоих баз
Через ODBC или Ole DB какие и ка лучше драйверы поставить на fdb
Желательно пример
Старый 27.05.2010, 17:00   #2  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Я когда-то работал через ODBC, но мне только читать из FB базы нужно было. Примеров к сожалению нет, но помню что база была какой-то софтины для таможенных брокеров.
Старый 28.05.2010, 10:02   #3  
Pudd is offline
Pudd
Участник
 
34 / 10 (1) +
Регистрация: 31.03.2010
Нашёл я ODBC драйвер но но как в в коде написать доступ к fdb не знаю?
Старый 28.05.2010, 12:47   #4  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Если до вечера никто не отпишется, то пришлю пример, дома есть для 3.0.
Старый 28.05.2010, 12:56   #5  
greench is offline
greench
Участник
Oracle
 
425 / 74 (3) ++++
Регистрация: 12.07.2007
Адрес: Киев
Посмотрите классы BankImport_RU или AddressCodeImport_RU. Там идет импорт из базы, к которой поключаются через ODBC.
Старый 28.05.2010, 14:10   #6  
Pudd is offline
Pudd
Участник
 
34 / 10 (1) +
Регистрация: 31.03.2010
хорошо б пример
Старый 01.06.2010, 09:33   #7  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 429 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Проводили эксперименты на эту тему. Вот отрывки кода, который работал. Если причесать немного - то в общем вполне работоспособно.
Для работы этого, насколько помнится, необходимо предварительно установить драйверы (там их 2 типа, ясно из названий. Работали оба).
Но в итоге остановились на использовании низкоуровневых функций клиентской библиотеки gds32.dll (Пришлось повозится с месяц с их описанием).
Кстати, почему бы не попробовать использовать .NET правайдер для FB ? В ax2009 с этим вроде бы без проблем ?
X++:
static void access_2interbase(Args _args)
{
    CCADOConnection cn = new CCADOConnection();
    CCADOCommand command = new CCADOCommand();
    CCADORecordset rs = new CCADORecordset();
    CCADORecordset rs1 = new CCADORecordset();
    int k;
    DSOConnection cn = new DSOConnection();
    DSOCommand    command = new DSOCommand();
    DSORecordset  rs = new DSORecordset();
    DSOFields     fields;
    DSO_Recordset d_rs;
    InvenTtable inventTable;
    ;
    cn.connection().open(strfmt("DRIVER=Firebird/InterBase(r) driver;UID=SYSDBA;PWD=masterkey;DBNAME=K:\\Data\\base.gdb"));
    cn.open(strfmt("DATABASE=G:\\Data\\base.gdb;DIALECT=3;DRIVER=Gemini InterBase ODBC Driver 2.0;OPTIONS=1;PWD=masterkey;PROTOCOL=1;UID=SYSDBA;VERSION=6' "));
    command.setActiveConnection(cn);
 
    command.commandText("update goods set cod = 4 where cod = '3'");
    rs = command.execute();
 
    command.activeConnection(cn);
    command.commandText("select * from goodsgroups");
    rs = command.execute();
    while (!rs.eof())
    {
        info(chi_str(rs.fields().itemName("id").value()));
        info(chi_str(rs.fields().itemName("name").value()));
        info(chi_str(rs.fields().itemName("description").value()));
        rs.fields().itemI
        rs.recordSet().Update(2, "aaaa");
        rs.moveNext();
        k ++;
        if (k==10)
            break;
    }
// insert
    command.commandText("insert into managers (ID,NAME) VALUES ('2','ccc')");
    rs = command.execute();
    d_rs = cn.Execute("select * from goods",, 0);
 
    d_rs.setActiveConnection(cn);
    d_rs = cn.Execute("select * from goods", null, 0);
    d_rs.MoveFirst();
    d_rs.Update(
    !rs.eof())
    {
        info(chi_str(rs.fields().itemName("id").value()));
        info(chi_str(rs.fields().itemName("id").value()) + "\t" + chi_str(rs.fields().itemName("name").value()));
        info(chi_str(rs.fields().itemName("id").value()) + "\t" + chi_str(rs.fields().itemName("description").value()));
        command.commandType();
        //dig DSORecordset
        rs.moveNext();
        k ++;
        if (k==10)
            break;
    }
 
    while select ItemId, ItemName from inventTable
    {
        command.commandText("insert into table1 (COD,NAME) VALUES " +
                            "('"   + inventTable.ItemId +
                            "', '" + str2str(inventTable.ItemName) + "')");
        rs = command.execute();
    }
    info(time2str(timenow(),0,0) + " end");
    cn.close();
}
Старый 05.06.2020, 16:55   #8  
jonny.do is offline
jonny.do
Участник
 
7 / 11 (1) +
Регистрация: 14.02.2018
Пытаюсь воскресить динозавра.
Ax 2009.
FirebirdClient под .NET 3.5(https://sourceforge.net/projects/fir...rovider/2.5.2/)

При попытке заюзать библиотеку вываливается синтаксическая ошибка при компиляции на пространстве имен .Data:
DataFirebirdSql.Data.FirebirdClient.FbCommand
После Data подстановка отваливается собственно...

Не в курсе в чем может быть дело?

Последний раз редактировалось jonny.do; 05.06.2020 в 16:58.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
mbsturk: Ax 2009 Rollup 4 Version Checker Blog bot DAX Blogs 0 29.04.2010 17:05
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
gatesasbait: Dynamics AX 2009 SSRS and SSAS Integration Tips Blog bot DAX Blogs 3 09.07.2009 13:07
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
Arijit Basu: AX 2009 - Quick Overview Blog bot DAX Blogs 4 19.05.2008 14:47

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

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

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