Показать сообщение отдельно
Старый 17.04.2006, 08:53   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Вот
X++:
static void ODBCConnection2Excel(Args _args)
{
    LoginProperty           LP          = new LoginProperty();
    OdbcConnection          myConnection;
    Statement               myStatement;
    ResultSet               myResult;
    DictTable               dictTable   = new DictTable(tableNum(InventTable));
    ComExcelDocument_Ru     Excel       = new ComExcelDocument_Ru();
    Com                     Doc;
    Com                     App;
    Com                     Worksheet;
    Com                     Range;
    int                     i = 1;
    ;
    Excel.newFile("", false);
    doc = Excel.getComDocument();
    App = doc.Application();
    Worksheet = App.ActiveSheet();

    LP.setDSN("Axapta");
/*    LP.setUsername("");       // Если необходимо - устанавливаем имя и пароль для подключения
    LP.setPassword("");*/
    try    
    {        
        myConnection = new OdbcConnection(LP);    
    }    
    catch    
    {        
        info("Check username/password.");        
        return;    
    }
    myStatement = myConnection.createStatement();
    myResult = myStatement.executeQuery(
        strfmt("SELECT %3, %4 FROM %1 WHERE DataAreaId = '%2'",
            dictTable.name(DBBackend::Sql), curext(), 
            dictTable.fieldName(fieldnum(InventTable, ItemId), DBBackend::Sql),
            dictTable.fieldName(fieldnum(InventTable, ItemName), DBBackend::Sql)));


    Range = Worksheet.Range("A1");
    Range.NumberFormat("@");
    Range.Value2(dictTable.fieldObject(fieldnum(InventTable, ItemId)).label());

    Range = Worksheet.Range("B1");
    Range.NumberFormat("@");
    Range.Value2(dictTable.fieldObject(fieldnum(InventTable, ItemName)).label());

    while (myResult.next())
    {
        Range = Worksheet.Range(ComExcelDocument_Ru::numToNameCell(1, i+1));
        Range.NumberFormat("@");
        Range.Value2(myResult.getString(1));

        Range = Worksheet.Range(ComExcelDocument_Ru::numToNameCell(2, i+1));
        Range.NumberFormat("@");
        Range.Value2(myResult.getString(2));

        if (i > 100) break;
        i++;
    }
    Range = Worksheet.Range("A1", "B1");
    Range = Range.EntireColumn();
    Range.AutoFit();

    Excel.visible(true);
}
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Sada (1).