|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
4. Reporting Services: формулы (выражения), глобальные коллекции, параметры, фильтрация записей4.1 Основы работы с формулами (выражениями)Выражения (expressions) в Reporting Services SQL Server 2000, поля (fields), формулы условного форматирования (conditional formatting), функции (functions), возможность работы с классами пространств имен .NET Как таковых, формул в Reporting Services нет. Вместо них используются выражения (expressions), понятие которых несколько шире. Например, все поля, которые добавляются в отчет из источника, должны добавляться как выражения. У всех выражений есть общее правило - они должны начинаться со знака равенства. Выражения можно условно разделить на несколько категорий: · поля (Fields) - поля из базы данных. Выглядят например, как =Fields!Country.Value. Коллекция Fields - одна из пяти глобальных коллекций (Global Collections), о которых будет рассказано ниже; · формулы условного форматирования (conditional formatting). Пример: = IIF(Me.Value < 1, "Red", "Black"). Расшифровывается так: если значение данной ячейки меньше единицы, то окрасить его в красный цвет, если нет - то сделать черным. То, что ожидает получить от нас в качестве возвращаемого значения функция условного форматирования, часто можно посмотреть в окне Edit Expression под контейнером Constants, хотя набор допустимых значений там оказывается не всегда. Если набора значений там нет, то придется обращаться к документации. Настроить условное форматирование для любого свойства можно, если в окне Properties (под Solution Explorer) выбрать нужное свойство и в списке значений выбрать <Expression...>. · функции (functions). Функции, которые можно использовать в отчете, например, агрегатные. Синтаксис большинства агрегатных функций выглядит так: Function(Expression, Scope), например: Sum(Fields!SalesAmout.Value, "Category"). При этом Expression - это выражение, к которому применяется группировка (чаще всего числовое поле из Data Set), а Scope определяет, какие строки из Details будут обрабатываться функцией. Агрегаты вычисляются для групп записей, у которых общее значение в Scope. Если значение Scope явно не определено, то:
Набор агрегатных функций - вполне обычный. В добавление к тому, что знакомо по Crystal Reports, имеются также: · First и Last (просто первое и последнее значение); · RowNumber - возвращает номер записи в Data Set, возвращается на 1, если Scope изменяется (началась новая группа). Можно использовать, например, чтобы каждую запись в группе (отчете) покрасить в свой цвет; · RunningValue - аккумулирует результаты, возвращаемые агрегатной функцией, может использоваться для подсчета нарастающих итогов. На первый взгляд, по количеству встроенных функций Reporting Services явно уступают Crystal Reports, но на самом деле это не так. В вашем распоряжении - все колоссальное богатство пространств имен .NET, тысячи классов и их методов. В Reporting Services напрямую доступны классы из пространств имен Microsoft.VisualBasic, System.Convert, and System.Math, а также, если обращаться по полному пути (например, System.Collections.ArrayList) все остальные сборки .NET. Но для работы с ними необходимо разбираться в пространствах имен .NET и уметь разбираться в ручном написании кода XML.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
Получить учебные материалы по этому курсу
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||