AddPercentCalculate(
Name: String;
RelationElement: Integer;
Relation: DimRelation;
TotalDisposition: PivotEvaluatorTotalDisposition;
TotalType: PivotEvaluatorElementType): Integer;
Name. Наименование создаваемого вычисляемого элемента;
RelationElement. Элемент измерения, относительно которого будет позиционироваться вычисляемый элемент;
Relation. Позиция вставки вычисляемого элемента относительно элемента RelationElement;
TotalDisposition. Вид итогов, относительно которых будет осуществляться расчет вычисляемого показателя;
TotalType. Тип итогов, относительно которых будет осуществляться расчет вычисляемого показателя. Для расчета вычисляемого показателя данный тип итогов должен рассчитываться в таблице.
Метод AddPercentCalculate создает вычисляемый показатель, осуществляющий расчет процентного значения ячейки относительно итогового значения.
Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с наименованием «Button1», компонента UiErAnalyzer с наименованием «UiErAnalyzer1», и каких-либо компонентов, используемых для отображения данных отчета, загруженного в «UiErAnalyzer1», например TabSheetBox.
Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
OLAP: IEaxAnalyzer;
Grid: IEaxGrid;
Pivot: IPivot;
Sel: IDimSelection;
Totals: IPivotEvaluatorTotals;
Dim: IDimInstance;
Calcs: IPivotEvaluatorDimCalculates;
Calc: IPivotEvaluatorDimCalculatesItem;
Style: ITabCellStyle;
i, i1: Integer;
Begin
OLAP := UiErAnalyzer1.ErAnalyzer;
Grid := OLAP.Grid;
Pivot := OLAP.Pivot;
//Итоги
Totals := Pivot.Evaluator.Totals;
Totals.RowTypes := PivotEvaluatorElementType.Sum;
//Вычисляемый показател - Процент к итогу
Dim := Pivot.TopHeader.Dim(0);
Calcs := Pivot.Evaluator.DimCalculates;
Calc := Calcs.FindByDimKey(Dim.Key);
Sel := Pivot.Selection.FindByKey(Dim.Key);
i := Calc.AddPercentCalculate("Процент к итогу", Sel.Element(0), DimRelation.Last,
PivotEvaluatorTotalDisposition.Overall, PivotEvaluatorElementType.Sum);
i1 := Calc.AddPercentCalculate("Процент к подитогу", Sel.Element(0), DimRelation.Last,
PivotEvaluatorTotalDisposition.Sub_, PivotEvaluatorElementType.Sum);
//Настройка формата
Style := New TabCellStyle.Create;
Style.BackgroundBrush := New GxSolidBrush.Create(GxColor.FromName("Coral"));
Style.Font.Bold := TriState.OnOption;
Style.CustomFormat := "0,00%";
//Установка стиля для вычисляемых элементов
Grid.Style.DimCalculateStyle(Dim.Key, Calc.CalculatedElement(i)) := Style;
Grid.Style.DimCalculateStyle(Dim.Key, Calc.CalculatedElement(i1)) := Style;
Grid.Refresh;
End Sub Button1OnClick;
После выполнения примера при нажатии на кнопку для экспресс-отчета, загруженного в «UiErAnalyzer1», будет включен подсчет итогов. По строкам будет рассчитываться сумма значений. Также будут рассчитываться промежуточные значений итогов. Будут созданы два вычисляемых показателя, осуществляющих расчет на базе значений первого показателя, присутствующего в отметке по первому столбцу. Первый вычисляемый показатель будет рассчитывать процентное соотношение значений от общего итога, второй - процентное соотношение от промежуточных итогов. Для вычисляемых показателей будет настроен формат отображения.
Исходные данные:
Таблица с вычисляемыми элементами:
См. также: