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