|
<< Click to Display Table of Contents >> Navigation: Создание отчетов > Источники данных, переменные и функции > Функции и расчет итогов > Итоги > Итоги, не связанные с секциями |
Расчет итогов в отчете можно произвести, указав выражение, к примеру, {Sum(DataBand1)}. При этом, данные итоги считаются во время построения отчета: каждый раз, когда осуществляется одна операция с секцией Данные, производится расчет одного значения. Затем, все рассчитанные значения суммируются и в результате получится итоговое значение, которое будет отображено. В этом случае, итоги связаны с секциями. В 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. По умолчанию рассчитывает плотный ранг, и сортировка значений для присвоения ранга выполняется по возрастанию. |
{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 к имени функции, через разделитель ".". |