|
27.05.2010, 16:45 | #1 |
Участник
|
Работа FireBird(FDB) в AX 2009
Собственно интересуют варианты как можно организовать взаимодействие между таблицами из Fdb базы с аксаптовскими таблицами в обе стороны т е как на запись та и на чтение из обоих баз
Через ODBC или Ole DB какие и ка лучше драйверы поставить на fdb Желательно пример |
|
27.05.2010, 17:00 | #2 |
Участник
|
Я когда-то работал через ODBC, но мне только читать из FB базы нужно было. Примеров к сожалению нет, но помню что база была какой-то софтины для таможенных брокеров.
|
|
28.05.2010, 10:02 | #3 |
Участник
|
Нашёл я ODBC драйвер но но как в в коде написать доступ к fdb не знаю?
|
|
28.05.2010, 12:47 | #4 |
Участник
|
Если до вечера никто не отпишется, то пришлю пример, дома есть для 3.0.
|
|
28.05.2010, 12:56 | #5 |
Участник
|
Посмотрите классы BankImport_RU или AddressCodeImport_RU. Там идет импорт из базы, к которой поключаются через ODBC.
|
|
28.05.2010, 14:10 | #6 |
Участник
|
хорошо б пример
|
|
01.06.2010, 09:33 | #7 |
Участник
|
Проводили эксперименты на эту тему. Вот отрывки кода, который работал. Если причесать немного - то в общем вполне работоспособно.
Для работы этого, насколько помнится, необходимо предварительно установить драйверы (там их 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 |
Участник
|
Пытаюсь воскресить динозавра.
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. |
|
|
|