Работающий у меня пример.
X++:
static server void test_ADOConnection()
{
CCADOConnection adoConnection;
CCADOCommand adoCommand;
str strCommand;
FileFolder_RU fileFolder_RU;
CCADOFields adoFields;
CCADOField adoField_0,
adoField_1,
adoField_2,
adoField_3,
adoField_4;
;
// Путь доступа к директории, где находится DBF
fileFolder_RU = "C:\\MyFolder";
// Подключение к DBF
adoConnection = new CCADOConnection();
adoConnection.connectionString(strFmt("Driver={Microsoft dBase Driver (*.dbf)};DriverID=277;Dbq=%1;",fileFolder_RU));
adoConnection.open();
adoCommand = new CCADOCommand();
adoCommand.activeConnection(adoConnection);
adoCommand.commandType(1); // Возможно, этой настройки не хватает?
// Выполнение команды
strCommand = "Select * from MyTable.dbf";
adoCommand.commandText(strCommand);
adoRecordSet = adoCommand.execute();
adoFields = adoRecordSet.fields();
adoField_0 = adoFields.itemIdx(0);
adoField_1 = adoFields.itemIdx(1);
adoField_2 = adoFields.itemIdx(2);
adoField_3 = adoFields.itemIdx(3);
adoField_4 = adoFields.itemIdx(4);
// Просмотр результата
while (! adoRecordSet.EOF())
{
print " adoField_0=",adoField_0.value();
print " adoField_1=",adoField_1.value();
print " adoField_2=",adoField_2.value();
print " adoField_3=",adoField_3.value();
print " adoField_4=",adoField_4.value();
adoRecordSet.moveNext();
}
pause;
adoConnection.close();
return;
}
Если код работал, а потом перестал. И при этом сам код не менялся, то, возможно, произошло внешнее (по отношению к Axapta) изменение. Либо был изменен (удален) драйвер ADO/ODBC, либо была изменена какая-либо политика безопасности