|
<< Click to Display Table of Contents >> Navigation: Создание отчетов > Создание отчетов в MasterSCADA 4D > Источники данных, переменные и функции > Функции и расчет итогов > Итоги > Итоги, не связанные с бэндами |
Расчет итогов в отчете можно произвести, указав выражение, к примеру, {Sum(DataBand1)}. При этом, данные итоги считаются во время построения отчета: каждый раз, когда осуществляется одна операция с бэндом Данные (DataBand), производится расчет одного значения. Затем, все рассчитанные значения суммируются и в результате получится итоговое значение, которое будет отображено. В этом случае, итоги связаны с бэндами. В MasterReport расчет итогов можно произвести другим способом - моментально. Иначе говоря, рассчитать итог не связанный с бэндами. Для этого следует использовать специальный префикс Totals перед функцией с разделителем ".", например,{Totals.Sum(DataBand1)}. Расчет функций с префиксом Totals происходит в месте вызова функции, в отличие от итогов связанных с бэндами, расчет которых выполняется в ходе построения отчета.
Функция |
Описание |
Пример |
{Avg()} |
Предоставляет возможность высчитать среднее арифметическое значение. |
{Avg(DataSource.Column1)} - в этом случае, будет вычислено среднее арифметическое по колонке Column1. |
{Count()} |
Предоставляет возможность рассчитать количество значений или количество уникальных значений. |
{Count()} - в этом случае, результатом будет количество записей в источнике данных. |
{First()} |
Предоставляет возможность отобразить первое значение из указанного объекта. |
{First(DataSource1.Column1)} - в этом случае, результатом будет первое значение Column1 из источника DataSource1. |
{Last()} |
Предоставляет возможность отобразить последнее значение из указанного объекта. |
{Last(DataSource1.Column1)} - в этом случае, результатом будет последнее значение Column1 из источника DataSource1. |
{Max()} |
Предоставляет возможность отобразить максимальное значение из указанного объекта. |
{Max(DataSource1.Column1)} - в этом случае, результатом будет максимальное значение из Column1 источника DataSource1. |
{Median()} |
Предоставляет возможность отобразить среднее (не арифметическое) значение из списка. |
Допустим, Column1 содержит 5 значений: 2, 5, 6,1,7. Функция {Median(DataSource1.Column1)} отобразит среднее значения из этого списка, т.е. результатом будет значение 6. |
{Min()} |
Предоставляет возможность отобразить минимальное значение из указанного объекта. |
{Min(DataSource1.Column1)} - в этом случае, результатом будет минимальное значение из Column1 источника DataSource1. |
{Mode()} |
Предоставляет возможность отобразить значение, которое наиболее часто встречается в списке значений. |
{Mode(DataSource1.Column1)}. Допустим Сolumn1 содержит список значений: 2, 2, 6, 7, 7, 8, 7, 6, 5, 9, 4. В этом случае, результатом будет число 7, т.к. оно повторяется в списке значений наиболее часто. |
{Rank(,)} |
Предоставляется возможность отобразить ранг значения. Обязателен префикс Totals. •Объекты для обработки и присвоения ранга (тип object); •Значение (true or false) для присвоения плотного или не плотного ранка; •Направление сортировки значений. Возвращает значения различного типа long. |
{Totals.Rank(DataBand1,DataSource.Column1)}. Допустим, колонка Column1 содержит список значений: 44, 9, 36, 55, 71. В этом случае, значения будут отсортированы по возрастанию, т.е. 9, 36, 44, 55, 71 и каждому из них будет присвоен ранг. Число 9 получит ранг 1, 36 - ранг 2, 44 - ранг 3, 55 - ранг 4, 71 - ранг 5. По умолчанию, рассчитывает плотный ранг и сортировка значений для присвоения ранга выполняется по возрастанию |
{StDev()} |
Предоставляет возможность вычислить стандартное отклонение для выборки. |
{Totals.StDev(DataSource1, DataSource1.Column1)} - в этом случае, результатом будет стандартное отклонение значений Column1 (выборка). |
{Sum()} |
Предоставляет возможность отобразить результат суммы значений. •Объекты для обработки и присвоения ранга (тип object); •Условие; •Выражение суммирования. Возвращает значения различного типа long, decimal, double, TimeSpan. |
{Sum(DataSource1.Column1)} - в этом случае, результатом будет сумма всех значений Column1 в источнике DataSource1. |
Рассмотрим расчет итоговых значений, не связанных с бэндами.
Допустим, есть Master-Detail отчет, который представляет собой список продуктов по категориям:
В этом отчете, итог может быть рассчитан по каждой категории, по всему отчету. Также можно рассчитать долю каждой категории из общей суммы. Для начала рассчитаем сумму продуктов категории. Для этого, в шаблон отчета следует добавить бэнд Итог данных, разместить на нем текстовый компонент с выражением расчета итога {Sum(DataBand2,Products.UnitPrice)}. Для суммирования значений применяется функция Sum, в ее аргументах указывается объект по которому будут считаться итоги и колонка данных, значения которой будут суммироваться. Поскольку, необходимо рассчитать сумму продуктов по каждой категории, то объектом для расчета итогов будет детальный бэнд Данные, т.е.DataBand2 . Значения в колонке UnitPrice обозначают стоимость каждого продукта, поэтому сумма этих значений и будет итог для категории:
В этом случае, итог является связанным с бэндом Данные. Для расчета итога по отчету, в этом случае, следует использовать функции не связанные с бэндами. Для этого, к функции необходимо добавить префикс Totals , через разделитель ".". В качестве объекта, следует указать источник данных. Выражение расчета итога по отчету, в этом случае, будет {Totals.Sum(Products,Products.UnitPrice)}. Результат отобразим на master бэнде:
Каждый раз, когда в отчете будет печататься master бэнд, будет выводиться итог по отчету. Используя результаты расчетов, можно вычислить долю каждой категории из общего итога. Результат отобразим в процентах. Для расчета доли, следует итог по категории разделить на итог по отчету -{(Sum(DataBand2,Products.UnitsInStock) / Totals.Sum(Products, Products.UnitsInStock))}. Для текстового компонента, в котором будет выводиться доля, следует установить процентный формат. Результат отобразим на master бэнде:
Таким образом, рассчитать можно любой итог в отчете. Для расчета итога не связанного с бэндами следует использовать префикс Totals к имени функции, через разделитель ".". |