![]() |
#17 |
Administrator
|
Есть рабочий примерчик.... Но правда как было верно подмечено на sql.ru - работает на Access. Не проверял на других БД.
X++: // Экспорт из Axapta через ADO в другую базу данных заданной таблицы static void tutorial_WriteADO(Args _args) { CCADOConnection cn = new CCADOConnection(); CCADOCommand command = new CCADOCommand(); CCADORecordset rcs; Str connectionString; str tableName = "VENDTABLE"; FilePath filePath = "D:\\zz.mdb"; anytype newValue; #CCADO ; connectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;'; connectionString += 'Data Source=' + filePath + ';'; connectionString += 'Mode=ReadWrite;'; connectionString += 'Persist Security Info=False'; cn.open(connectionString); rcs = new CCADORecordset(); rcs.open(tableName, cn, #adOpenKeyset, #adLockOptimistic, #adCmdTable); rcs.addNew(); for (i = 1; i <= rcs.fields().count(); i++) { rcs.fields().itemIdx(i - 1).setValue(newValue); } rcs.update(); } методы: X++: void addNew() { recordSet.AddNew(); } void update() { recordSet.update(); } X++: // Установка значения (real, date, int, str) void setValue(anytype _value) { switch (typeof(_value)) { case Types::Date: field.value(COMVariant::createFromDate(_value)); break; case Types::Enum, Types::Integer: field.value(COMVariant::createFromInt(_value)); break; case Types::Real: field.value(COMVariant::createFromReal(_value)); break; case Types::RString, Types::String, Types::VarString: field.value(COMVariant::createFromStr(_value)); break; default: field.value(COMVariant::createNoValue()); } } Поэтому обновляемые рекордсеты не сильно распространены. Гораздо гибче и удобнее SQL - операторы UPDATE, INSERT, DELETE
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 27.04.2006 в 19:22. |
|