Показать сообщение отдельно
Старый 01.10.2010, 15:12   #5  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,338 / 3558 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Такой перебор плох тем, что для перебора нужно осуществить выборку из DBF. Т.е. если вдруг файл очень большой - то может уйти большое время для такого перебора.
Выкладываю (для потомков уже) пример работы с ADOX (слизано с класса CCADOCommandBuild). Код написан для 2009 RU5. В 4.0 можно было еще не пользоваться объектом COM - были нужные классы

X++:
static void Job1(Args _args)
{
    CCADOConnection   ccADOConnection;
    COM               ccADOXCatalog;   // Эх, а в 4.0 этот класс был...
    COM               ccADOXTables;    // А это семейство было в классе CCADOXCatalog от 4.0
    COM               ccADOXTable;     // Эх, а в 4.0 этот класс тоже был...
    COM               ccADOXColumns;   // А это семейство было в классе CCADOXTable от 4.0
    CCAdoxColumn      ccAdoxColumn;
    int               i;
    #define.myConnectionString('MyConnectionString')
    #define.myTableName('myTableName')
   ;
    ccADOConnection = new CCADOConnection();
    ccADOConnection.open(#myConnectionString);
    ccADOXCatalog = new COM('ADOX.Catalog');
    if (!ccADOXCatalog)
    {
        throw error("@SYS32731");
    }
    ccADOXCatalog.activeConnection(ccADOConnection.connection());
    ccADOXTables  = ccADOXCatalog.tables();
    ccADOXTable   = ccADOXCatalog.item(#myTableName);
    ccADOXColumns = ccADOXTable.columns();
    for (i = 0; i < ccADOXColumns.count(); i++)
    {
        ccAdoxColumn = new CCAdoxColumn(ccADOXColumns.item(i));
        info(strfmt("%1 %2", ccAdoxColumn.name(), ccAdoxColumn.xppType()));
    }
}
__________________
Возможно сделать все. Вопрос времени
За это сообщение автора поблагодарили: aidsua (2).