ILanerCalculateSerie.Calculate

Синтаксис

Calculate;

Описание

Метод Calculate осуществляет расчет вычисляемого ряда.

Пример

Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с наименованием «Button1», компонента TabSheetBox и компонента UiErAnalyzer с наименованием «UiErAnalyzer1», являющегося источником данных для TabSheetBox. В «UiErAnalyzer1» должна быть загружена рабочая область базы данных временных рядов, в таблице данных которой должно быть более одного ряда данных.

Пример будет выполняться при нажатии на кнопку.

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);

Var

Laner: Ilaner;

UsingSerie, UsingSerie2: ILanerSerie;

NewSerie: ILanerCalculateSerie;

Str: String;

Trasss: IFormulaTransformModel;

ms: IMsFormulaTransform;

TransformVar: IMsFormulaTransformVariable;

Coord: IMsFormulaTransformCoord;

Slice: IMsFormulaTransformSlice;

selector: IMsFormulaTransformSelector;

Formula: IMsFormula;

Det: IMsDeterministicTransform;

Term1, Term2: IMsFormulaTerm;

Begin

Laner := UiErAnalyzer1.ErAnalyzer.Laner;

Laner.BeginUpdate;

UsingSerie := Laner.Series.Item(0) As ILanerSerie;

UsingSerie2 := Laner.Series.Item(1) As ILanerSerie;

Str := "Summ_(" + UsingSerie.Name + " , " + UsingSerie2.Name + ")";

NewSerie := Laner.Series.AddCalculateSerie(Str);

Trasss := NewSerie.Transform;

Trasss.AddInputVariable(UsingSerie.Stub);

Trasss.AddInputVariable(UsingSerie2.Stub);

ms := Trasss.Transform As IMsFormulaTransform;

TransformVar := ms.Outputs.Item(0);

Coord := ms.CreateCoord(TransformVar);

Slice := TransformVar.Slices.Add(Null);

Selector := ms.CreateSelector;

Selector.Slice := Slice;

Formula := ms.Transform(Selector);

Formula.Kind := MsFormulaKind.Deterministic;

Formula.Level := DimCalendarLevel.Year;

Det := Formula.Method As IMsDeterministicTransform;

TransformVar := ms.Inputs.Add(UsingSerie.Stub);

Slice := TransformVar.Slices.Add(Null);

TransformVar := ms.Inputs.Add(UsingSerie.Stub);

Slice := TransformVar.Slices.Add(Null);

Term1 := Det.Operands.Add(Slice);

TransformVar := ms.Inputs.Add(UsingSerie2.Stub);

Slice := TransformVar.Slices.Add(Null);

Term2 := Det.Operands.Add(Slice);

Det.Expression.AsString := Term1.TermToInnerText + " + " + Term2.TermToInnerText;

NewSerie.Calculate;

Laner.EndUpdate;

End Sub Button1OnClick;

После выполнения примера будет добавлен новый вычисляемый ряд, представляющий собой сумму данных первых двух рядов.

См. также:

ILanerCalculateSerie