|
![]() |
#1 |
Участник
|
Проводили эксперименты на эту тему. Вот отрывки кода, который работал. Если причесать немного - то в общем вполне работоспособно.
Для работы этого, насколько помнится, необходимо предварительно установить драйверы (там их 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(); } |
|
|
|