Показать сообщение отдельно
Старый 25.03.2011, 11:35   #7  
refined is offline
refined
Участник
 
9 / 10 (1) +
Регистрация: 18.02.2011
просто думал что проблема не в самом рекордсете а в той памяти которую он занимает.

AdoRecordset собрал из таблиц:

X++:
    ADOfields = ADORecordset.Fields();

    ADOfields.Append(#RContractCode     , #adVarChar,  20);
    ADOfields.Append(#RContractAccount  , #adVarChar,  20);
    ADOfields.Append(#Dimension1        , #adVarChar,  64);
    ADOfields.Append(#Dimension2        , #adVarChar,  64);
    ADOfields.Append(#BudgetAmount      , #adDouble);

while(qr.next())
    {
        custTrans = qr.get(tableNum(CustTrans));
ADORecordset.AddNew();
            ADOfield = ADOfields.Item(#RContractCode);
            ADOfield.Value(COMVariant::createFromStr(CustTrans.AccountNum));//+RContractTypes::find(rContractPartnerType::Cust));
            ADOfield = ADOfields.Item(#RContractAccount);
            ADOfield.Value(COMVariant::createFromStr(CustTrans.RContractAccount));
            ADOfield = ADOfields.Item(#Dimension1);
            ADOfield.Value(COMVariant::createFromStr(CustTrans.Dimension[1]+' '+dimensions::find(SysDimension::Department, CustTrans.Dimension[1]).Description));
            ADOfield = ADOfields.Item(#Dimension2);
            ADOfield.Value(COMVariant::createFromStr(CustTrans.Dimension[2]+' '+dimensions::find(SysDimension::Center, CustTrans.Dimension[2]).Description));
            ADOfield = ADOfields.Item(#BudgetAmount);
            ADOfield.Value(COMVariant::createFromReal(CustTrans.AmountMST));
        ADORecordset.Update();}
Вот потом, вывод:
X++:
PivotTable = grpPivotTableHolder.addControl(formControlType::ActiveX, "PivotTable");
    PivotTable.className(xPivotTableManager::getClassId(xPivotTableVersion::OfficePivotTable11));
    PivotTable.DataSource(reportEngine.ADORecordset());
    ptConstants = pivotTable.Constants();
    pivotTableView = pivotTable.ActiveView();
    avFieldSets = pivotTableView.FieldSets(); 
    COM::createFromObject(pivotTable.ActiveData()).HideDetails();
    COM::createFromObject(pivotTableView.TitleBar()).Visible(false); 

     this.processFieldSet(pivotTableView.RowAxis(), #Dimension1);
     this.processFieldSet(pivotTableView.RowAxis(), #Dimension2);
     this.processFieldSet(pivotTableView.DataAxis(), #BudgetAmount);
    pivotTotal = pivotTableView.AddTotal("Сумма", pivotField, ptConstants.plFunctionSum());
    COM::createFromObject(pivotTableView.DataAxis()).InsertTotal(pivotTotal);
смущает то, что на форме всё работает отлично, а вот экспорт в ексель не удается.