IEaxDataAreaSlices.Add

Fore Syntax

Add(Type: EaxDataAreaSliceType): IEaxDataAreaSlice;

Fore.NET Syntax

Add(Type: Prognoz.Platform.Interop.Express.EaxDataAreaSliceType):
Prognoz.Platform.Interop.Express.IEaxDataAreaSlice;

Parameters

Type. Data slice type.

Description

The Add method creates analytical data area slice.

Comments

To clear collection of analytical data area slices, use IEaxDataAreaSlices.Clear.

To get type of analytical data area slice, use IEaxDataAreaSlice.Type.

Fore Example

Executing the example requires that the repository contains a regular report with the REPORT identifier. A data source containing dimensions with the CALENDAR and COUNTRY identifier is added to the report. Link the Dimensions, Drawing, Express, System, Metabase, Pivot, Report system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    Report: IPrxReport;
    DA: IEaxDataArea;
    Slice: IEaxDataAreaSlice;
    Pivot: IPivot;
    DimSS: IDimSelectionSet;
    DimS: IDimSelection;
    DimInst: IDimInstance;
    View: IEaxGrid;
    Rect: IGxRect;
    ViewSets: IEaxGridViewSettings;
    T_Header, L_Header: IDataAreaHeaderSettingsBase;
Begin
    //Repository access
    MB := MetabaseClass.Active;
    //Regular report
    Report := MB.ItemById("REPORT").Edit As IPrxReport;
    // Get data area
    DA := Report.DataArea;
    // Add data slice
    Slice := DA.Slices.Add(EaxDataAreaSliceType.Pivot);
    Slice.CreateSource;
    Slice.Execute;
    // Get data table
    Pivot := (Slice As IEaxDataAreaPivotSlice).Pivot;
    // Place data source in table
    Pivot.DataSource := Report.DataSources.Item(0).DataSource;
    //Arrangement of dimensions and setting of selection
    Pivot.BeginSelectionUpdate;
    DimSS := Pivot.Selection;
    For Each DimS In DimSS Do
        DimInst := DimS.Dimension;
        If DimInst.Ident = "COUNTRY" Then
            Pivot.LeftHeader.AddDim(DimInst);
            //Select two first elements
            DimS.SelectElement(0False);
            DimS.SelectElement(1False);
        Elseif DimInst.Ident = "CALENDAR" Then
            Pivot.TopHeader.AddDim(DimInst);
            //Select elements of the level where the first element is placed
            DimS.SelectSiblings(0);
        Else
            Pivot.FixedHeader.AddDim(DimInst);
            //Select the first element
            DimS.SelectElement(0False);
        End If;
    End For;
    Pivot.EndSelectionUpdate;
    //Table data view
    View := Slice.Views.AddByType(EaxObjectType.Grid) As IEaxGrid;
    View.Pivot := Pivot;
    View.TabSheet := (Report.ActiveSheet As IPrxTable).TabSheet;
    Rect := New GxRect.Create(0000);
    View.OutputRect := Rect;
    //Set insert methods
    ViewSets := View.ViewSettings;
    T_Header := Pivot.TopHeader As IDataAreaHeaderSettingsBase;
    (ViewSets.GetViewSettings(T_Header) As IEaxGridHeaderSettings).Behaviour := EaxGridHeaderBehaviour.Insert;
    L_Header := Pivot.LeftHeader As IDataAreaHeaderSettingsBase;
    (ViewSets.GetViewSettings(L_Header) As IEaxGridHeaderSettings).Behaviour := EaxGridHeaderBehaviour.Insert;
    //Save changes
    Report.MetabaseObject.Save;
End Sub UserProc;

On executing the example a new data slice is created in the regular report. A data area is added and placed on report's active sheet.

Fore.NET Example

The requirements and result of Fore.NET Example execution is the same as in the Fore Example.

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Drawing;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Pivot;
Imports Prognoz.Platform.Interop.Report;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Report: IPrxReport;
    DA: IEaxDataArea;
    Slice: IEaxDataAreaSlice;
    Pivot: PivotFactory;
    DimSS: IDimSelectionSet;
    DimS: IDimSelection;
    DimInst: IDimInstance;
    View: IEaxGrid;
    Rect: GxRect = New GxRectClass();
    ViewSets: IEaxGridViewSettings;
    T_Header, L_Header: IDataAreaHeaderSettingsBase;
Begin
    //Repository access
    MB := Params.Metabase;
    //Regular report
    Report := MB.ItemById["REPORT"].Edit() As IPrxReport;
    // Get data area
    DA := Report.DataArea;
    // Add data slice
    Slice := DA.Slices.Add(EaxDataAreaSliceType.edastPivot);
    Slice.CreateSource();
    Slice.Execute();
    // Get data table
    Pivot := (Slice As IEaxDataAreaPivotSlice).Pivot;
    // Place data source in table
    Pivot.DataSource := Report.DataSources.Item[0].DataSource;
    //Arrangement of dimensions and setting of selection
    Pivot.BeginSelectionUpdate();
    DimSS := Pivot.Selection;
    For Each DimS In DimSS Do
        DimInst := DimS.Dimension;
        If DimInst.Ident = "COUNTRY" Then
            Pivot.LeftHeader.AddDim(DimInst);
            //Select two first elements
            DimS.SelectElement(0False);
            DimS.SelectElement(1False);
        Elseif DimInst.Ident = "CALENDAR" Then
            Pivot.TopHeader.AddDim(DimInst);
            //Select elements of the level where the first element is placed
            DimS.SelectSiblings(0);
        Else
            Pivot.FixedHeader.AddDim(DimInst);
            //Select the first element
            DimS.SelectElement(0False);
        End If;
    End For;
    Pivot.EndSelectionUpdate();
    //Table data view
    View := Slice.Views.AddByType(EaxObjectType.eotGrid) As IEaxGrid;
    View.Pivot := Pivot;
    View.TabSheet := (Report.ActiveSheet As IPrxTable).TabSheet;
    Rect.Create(0000);
    View.OutputRect := Rect;
    //Set insert methods
    ViewSets := View.ViewSettings;
    T_Header := Pivot.TopHeader As IDataAreaHeaderSettingsBase;
    (ViewSets.GetViewSettings[T_Header] As IEaxGridHeaderSettings).Behaviour := EaxGridHeaderBehaviour.eghbInsert;
    L_Header := Pivot.LeftHeader As IDataAreaHeaderSettingsBase;
    (ViewSets.GetViewSettings[L_Header] As IEaxGridHeaderSettings).Behaviour := EaxGridHeaderBehaviour.eghbInsert;
    //Save changes
    Report.MetabaseObject.Save();
End Sub;

See also:

IEaxDataAreaSlices