IEaxDataAreaSlice.Params

Fore Syntax

Params: IEaxDataAreaParams;

Fore.NET Syntax

Params: Prognoz.Platform.Interop.Express.IEaxDataAreaParams;

Description

The Params property returns analytical data area slice parameters.

Comments

The parameters enable the user to use in formulas not dimension separate elements, but the whole dimensions.

Fore Example

Executing the example requires that the repository contains a regular report with the REPORT identifier. An analytical data area is created in the report, there is a dimension with the REGIONS identifier among source dimensions.

Link the Dal, Dimensions, Express, Metabase, Report system assemblies.

Sub UserProc;
Var
    MB: IMetabase;
    Report: IPrxReport;
    DataArea: IEaxDataArea;
    DataAreaSlice: IEaxDataAreaSlice;
    DimSS: IDimSelectionSet;
    DimS: IDimSelection;
    DimInst: IDimInstance;
    Hierarchies: IEaxDataAreaHierarchies;
    Hierarchy: IEaxDataAreaHierarchy;
    CustomDim: ICustomDimension;
    Elements: ICustomDimElements;
    Attributes: ICustomDimAttributes;
    Params: IEaxDataAreaParams;
    Param: IEaxDataAreaParam;
    Transform: IEaxDataAreaTransformation;
    hKey, newElIndex, ElId: Integer;
Begin
    MB := MetabaseClass.Active;
    Report := MB.ItemById("REPORT").Edit As IPrxReport;
    DataArea := Report.DataArea As IEaxDataArea;
    DataAreaSlice := DataArea.Slices.Item(0);
    //Source dimension
    DimSS := DataAreaSlice.Selection;
    DimS := DimSS.FindById("REGIONS");
    DimInst := DimS.Dimension;
    //Analytical data area slice parameters
    Params := DataAreaSlice.Params;
    //Clearing of parameters list
    Params.Clear;
    //Adding a new parameter
    Param := Params.AddNew;
    Param.Hidden := False;
    Param.Id := "ID1";
    Param.Name := "Test parameter";
    Param.LinkedObject := DimInst.MetabaseObject.Object;
    Param.DataType := DbDataType.Integer;
    Param.DefaultValue := DimInst.Elements.Elements.Element(0);
    //Create a calculated element based on the created parameter
    Hierarchies := DataArea.Hierarchies;
    //Hierarchy unique key
    hKey := Hierarchies.CreateKey(DataAreaSlice.Key, DimS.Dimension.Key);
    //Get alternative hierarchy by its key
    Hierarchy := Hierarchies.FindByKey(hKey);
    //If hierarchy is not found by key, create it
    If Hierarchy = Null Then
        Hierarchy := Hierarchies.Add(DataAreaSlice, DimS, hKey);
    End If;
    //Get facts dimension
    CustomDim := Hierarchy.CustomDimension;
    //Get elements and indexes of fact dimension attributes
    Elements := CustomDim.Elements;
    Attributes := CustomDim.Attributes;
    //Creating a new element
    newElIndex := Elements.Add;
    ElId := Elements.RowCount + 1;
    //Attribute values for new element
    Elements.AttributeValueByKey(newElIndex, Attributes.Name.Key) := "Calculated element";
    Elements.AttributeValueByKey(newElIndex, Attributes.Id.Key) := ElId.ToString;
    Elements.AttributeValueByKey(newElIndex, Attributes.Order.Key) := ElId;
    //Applying of changes to dimension with alternative hierarchy
    Hierarchies.PushChangesToDimInstance(DimS, CustomDim);
    newElIndex := DimS.Dimension.Elements.FindById(ElId.ToString);
    //Transformation formula for calculated element
    Transform := DataAreaSlice.CalcTransformations.Add(DimSS, DimS, newElIndex);
    Transform.Enabled := True;
    Transform.Expression.AsString := '{' + Param.Id + '}';
    Hierarchies.AddDependant(DimS, hKey, DimSS, ElId.ToString, Transform);
    //Saving
    Report.MetabaseObject.Save;
End Sub UserProc;

On executing the example the analytical data area slice is extended:

Fore.NET Example

The requirements and result of the Fore.NET Example execution match with those in the Fore Example.

Imports Prognoz.Platform.Interop.Dal;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Report;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Report: IPrxReport;
    DataArea: IEaxDataArea;
    DataAreaSlice: IEaxDataAreaSlice;
    DimSS: IDimSelectionSet;
    DimS: IDimSelection;
    DimInst: IDimInstance;
    Hierarchies: IEaxDataAreaHierarchies;
    Hierarchy: IEaxDataAreaHierarchy;
    CustomDim: ICustomDimension;
    Elements: ICustomDimElements;
    Attributes: ICustomDimAttributes;
    EaxParams: IEaxDataAreaParams;
    Param: IEaxDataAreaParam;
    Transform: IEaxDataAreaTransformation;
    hKey, newElIndex: UInteger;
    ElIndex, ElId: Integer;
Begin
    MB := Params.Metabase;
    Report := MB.ItemById["REPORT"].Edit() As IPrxReport;
    DataArea := Report.DataArea As IEaxDataArea;
    DataAreaSlice := DataArea.Slices.Item[0];
    //Source dimension
    DimSS := DataAreaSlice.Selection;
    DimS := DimSS.FindById("REGIONS");
    DimInst := DimS.Dimension;
    //Analytical data area slice parameters
    EaxParams := DataAreaSlice.Params;
    //Clearing of parameters list
    EaxParams.Clear();
    //Adding a new parameter
    Param := EaxParams.AddNew();
    Param.Hidden := False;
    Param.Id := "ID1";
    Param.Name := "Test parameter";
    Param.LinkedObject := DimInst.MetabaseObject.Object;
    Param.DataType := DbDataType.ddtInteger;
    Param.DefaultValue := DimInst.Elements.Elements.Element[0];
    //Create a calculated element based on the created parameter
    Hierarchies := DataArea.Hierarchies;
    //Hierarchy unique key
    hKey := Hierarchies.CreateKey(DataAreaSlice.Key, DimS.Dimension.Key);
    //Get alternative hierarchy by its key
    Hierarchy := Hierarchies.FindByKey(hKey);
    //If hierarchy is not found by key, create it
    If Hierarchy = Null Then
        Hierarchy := Hierarchies.Add(DataAreaSlice, DimS, hKey, Null);
    End If;
    //Get facts dimension
    CustomDim := Hierarchy.CustomDimension;
    //Get elements and indexes of fact dimension attributes
    Elements := CustomDim.Elements;
    Attributes := CustomDim.Attributes;
    //Creating a new element
    ElIndex := Elements.Add();
    ElId := Elements.RowCount + 1;
    //Attribute values for new element
    Elements.AttributeValueByKey[ElIndex, Attributes.Name.Key] := "Calculated element";
    Elements.AttributeValueByKey[ElIndex, Attributes.Id.Key] := ElId.ToString();
    Elements.AttributeValueByKey[ElIndex, Attributes.Order.Key] := ElId;
    //Applying of changes to dimension with alternative hierarchy
    Hierarchies.PushChangesToDimInstance(DimS, CustomDim);
    newElIndex := DimS.Dimension.Elements.FindById(ElId.ToString());
    //Transformation formula for calculated element
    Transform := DataAreaSlice.CalcTransformations.Add(DimSS, DimS, newElIndex);
    Transform.Enabled := True;
    Transform.Expression.AsString := '{' + Param.Id + '}';
    Hierarchies.AddDependant(DimS, hKey, DimSS, ElId.ToString(), Transform);
    //Saving
    Report.MetabaseObject.Save();
End Sub;

See also:

IEaxDataAreaSlice