IAdoMdExecuteDimSetup.Calculations

Синтаксис

Calculations: IAdoMdDimCalculations;

Описание

Свойство Calculations возвращает коллекцию вычисляемых элементов измерения.

Пример

Для выполнения примера предполагается наличие в репозитории каталога ADOMD с идентификатором «ADOMDTest», в этом каталоге имеется куб ADOMD - «SALES». В структуре куба должны присутствовать измерения на базе справочников ADOMD с идентификаторами «DATE» и «COUNTRY».

Sub UserProc;
Var
    MB: IMetabase;
    CubeInst: ICubeInstance;
    Dest: ICubeInstanceDestination;
    SelSet: IDimSelectionSet;
    Sel: IDimSelection;
    DimSetup: ICubeExecuteDimSetup;
    Calcs: IAdoMdDimCalculations;
    Calc: IAdoMdDimCalculation;
    Exec: ICubeInstanceDestinationExecutor;
    AdoExec: IAdoMdCubeExecutor;
    Mat: IMatrix;
Begin
    MB := MetabaseClass.Active;
    CubeInst := MB.ItemByIdNamespace("SALES", MB.GetObjectKeyById("ADOMDTest")).Open(NullAs ICubeInstance;
    Dest := CubeInst.Destinations.DefaultDestination;
    SelSet := Dest.CreateDimSelectionSet;
    //Установка отметок
    For Each Sel In SelSet Do
        If Sel.Dimension.Ident = "COUNTRY" Then
            DimSetup := CubeClass.SelectionSetup(Sel);
            If DimSetup <> Null Then
                DimSetup.GroupIndex := 2;
            End If;
            //Создание вычисляемого элемента
            Calcs := (DimSetup.Extension As IAdoMdExecuteDimSetup).Calculations;
            Calc := Calcs.Add("");
            Calc.Element(Sel.Dimension) := Sel.LastDimElement;
            Calc.Expression := "SUM([DATE].[Year].Children)";
            //Полная отметка
            Sel.SelectAll;
        Elseif Sel.Dimension.Ident = "DATE" Then
            Sel.SelectElement(1False);
            DimSetup := CubeClass.SelectionSetup(Sel);
            If DimSetup <> Null Then
                DimSetup.GroupIndex := 1;
            End If;
        Else
            Sel.SelectElement(1False);
            DimSetup := CubeClass.SelectionSetup(Sel);
            If DimSetup <> Null Then
                DimSetup.GroupIndex := 0;
            End If;
        End If
    End For;
    //Вычисление
    Exec := Dest.CreateExecutor;
    AdoExec := Exec As IAdoMdCubeExecutor;
    Exec.PrepareExecute(SelSet);
    Exec.PerformExecute;
    Mat := Exec.Matrix;
End Sub UserProc;

При выполнении примера для последнего элемента в измерении «COUNTRY» будет добавлен вычисляемый элемент. После этого куб будет вычислен, результирующая матрица будет доступна в переменной «Mat».

См. также:

IAdoMdExecuteDimSetup