ICalculatedCubeFormulas.Add

Syntax

Add(DateBegin: DateTime; DateEnd: DateTime): ICalculatedCubeFormula;

Parameters

DateBegin. Formula actual start date.

DateEnd. Formula actual end date.

Description

The Add method adds a new formula.

Comments

The method is used if calculated cube has a dimension that controls selection of formula actual period. If formula actual period control is set up in the cube, use the ICalculatedCubeFormulas.Item property to get formulas.

Fore Example

Executing the example requires that the repository contains a calculated cube with the Calc_Cube identifier. A source cube and a calculated cube contain two dimensions that are not fixed, also the dimension, controlling the selection of formula actual period, is set.

Sub UserProc;
Var
    MB: IMetabase;
    CubeInst: ICalculatedCubeInstance;
    Coord, SourceCoord: ICalculatedCubeInstanceCoord;
    Formulas: ICalculatedCubeFormulas;
    Formula: ICalculatedCubeFormula;
    d: DateTime;
Begin
    MB := MetabaseClass.Active;
    CubeInst := MB.ItemById("Calc_Cube").Open(NullAs ICalculatedCubeInstance;
    //Get coordinate in calculated cube
    Coord := CubeInst.CreateCoord;
    Coord.MatrixCoord.Item(0) := 0;
    Coord.MatrixCoord.Item(1) := 0;
    //Get coordinate from source
    SourceCoord := CubeInst.CreateSourceCoord(CubeInst.Sources.Item(0));
    SourceCoord.MatrixCoord.Item(0) := 0;
    SourceCoord.MatrixCoord.Item(1) := 0;
    Formulas := CubeInst.Formula(Coord);
    Formula := Formulas.Item(Formulas.Count - 1);
    d := Formula.DateEnd;
    Formula := Formulas.Add(d.AddDays(d, 1), d.AddMonths(d, 6));
    Formula.Expression.AsString := SourceCoord.AsTerm + "*10";
    Formulas.Save;
    CubeInst.SaveFormulas;
End Sub UserProc;

After executing the example one formula is added to the calculated cube by the specified coordinate. A term that refers to appropriate coordinate in the source cube is used in the formula expression.

Fore.NET Example

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

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CubeInst: ICalculatedCubeInstance;
    Coord, SourceCoord: ICalculatedCubeInstanceCoord;
    Formulas: ICalculatedCubeFormulas;
    Formula: ICalculatedCubeFormula;
    d: DateTime;
Begin
    MB := Params.Metabase;
    CubeInst := MB.ItemById["Calc_Cube"].Open(NullAs ICalculatedCubeInstance;
    //Get coordinate in calculated cube
    Coord := CubeInst.CreateCoord();
    Coord.MatrixCoord.Item[0] := 0;
    Coord.MatrixCoord.Item[1] := 0;
    //Get coordinate from source
    SourceCoord := CubeInst.CreateSourceCoord(CubeInst.Sources.Item[0]);
    SourceCoord.MatrixCoord.Item[0] := 0;
    SourceCoord.MatrixCoord.Item[1] := 0;
    Formulas := CubeInst.Formula[Coord];
    Formula := Formulas.Item[Formulas.Count - 1];
    d := Formula.DateEnd;
    Formula := Formulas.Add(d.AddDays(1), d.AddMonths(6));
    Formula.Expression.AsString := SourceCoord.AsTerm + "*10";
    Formulas.Save();
    CubeInst.SaveFormulas();
End Sub;

See also:

ICalculatedCubeFormulas