Показать сообщение отдельно
Старый 09.01.2008, 13:59   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,711 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Максимальная длина символьного поля CCADOField
Мне надо через ADO подключиться к внешней базе данных Oracle (данные не связаны с Axapta) и прочитать содержимое полей. Выполняю такой код

X++:
static server void test_ADO()
{
    CCADOConnection adoConnection;
    CCADORecordSet  adoRecordSet;
    CCADOCommand    adoCommand;
    CCADOFields     adoFields;
    CCADOField      adoField;
    ;

    adoConnection = new CCADOConnection();
    adoConnection.open("Provider=OraOLEDB.oracle;Data Source=ХХХ;User Id=YYY;Password=ZZZ;");
    adoCommand = new CCADOCommand();
    adoCommand.activeConnection(adoConnection);
    adoCommand.commandType(1);

    adoCommand.commandText("SELECT MyField FROM MyTable WHERE rownum <= 1");
    adoRecordSet = adoCommand.execute();
    adoFields = adoRecordSet.fields();
    adoField = adoFields.itemIdx(0);
    while (! adoRecordSet.EOF())
    {
        print adoField.name(),"=",adoField.value(), " ", strLen(adoField.value());

        adoRecordSet.moveNext();
    }
    pause;

}
Проблема в том, что длина символьных полей обрезается до 100 (ста) символов. Все, что превышает 100 символов просто отбрасывается.

Как можно получить полное содержимое символьных полей без ограничения по длине? Т.е. длина может быть и более 1000 символов (мемо-поля)

AXPATA 2.5 SP3

Использован драйвер "Oracle Provider for OLE DB 9.2.4.0" из пакета "Oracle9i Release 2 Provider for OLE DB Version 9.2.0.4.0 (including ODAC) 32-bit"