Опубликован: 29.07.2008 | Доступ: свободный | Студентов: 1264 / 144 | Оценка: 4.49 / 4.15 | Длительность: 17:53:00
Лекция 8:

Введение в службы Reporting Services

Добавление программного кода к отчету

Если вы хотите настроить несколько свойств при помощи одного выражения, например, выражения цели продаж, которое мы использовали в предыдущем разделе, можно скопировать и вставить код в каждое выражение. Однако такой подход является неэффективным и трудно управляемым. Например, вам придется обновить каждый случай, если когда-либо нужно будет отредактировать отчет, чтобы изменить цель продаж.

Для решения этой проблемы следует вставить код централизованно, либо из самого отчета, либо из внешней сборки, ссылающейся на этот отчет. В этой лекции мы рассмотрим только первый случай.

Дополнительная информация Чтобы больше узнать об использовании внешних сборок в отчетах, ознакомьтесь с темой "Использование пользовательских сборок в отчетах" в Электронной документации по SQL Server 2005.

Мы разработаем функцию отчета для централизации вычислений полных имен сотрудников. Следовательно, мы используем выражение, которое ввели в предыдущем разделе, в ячейке под названием столбца Name.

Добавление кода с помощью вкладки Код
  1. Перейдите на вкладку Layout (Макет). В меню Report (Отчет) выберите команду Report Properties (Свойства отчета).
  2. Перейдите на вкладку Code (Код). Перед вами окажется пустое текстовое поле, в котором можно ввести код. Это текстовое поле не предлагает никакой помощи при вводе (ни выделения цветом синтаксиса, ни "умного ввода"). Следовательно, используйте его только в особых случаях, когда вы уверены в точности ввода Хорошая идея – ввести код в более мощном редакторе, проверить его, а затем вставить результирующий код в это текстовое поле.
  3. Вставьте или введите следующий код в окне Custom Code (Пользовательский код) (этот код довольно многословен, но имена переменных короткие из соображения лучшей читаемости кода).
    function FullName (fn as String, mn as String, ln as String) as String
      Dim res as string
      res = fn & " "
      res &= IIf(Len(mn) = 1, mn & ". ", "")
      res &= IIf(Len(mn) > 1, mn & " ", "")
      res &= ln
      return res 
    end function
  4. Нажмите кнопку ОК, чтобы подтвердить изменения.
  5. На вкладке Layout (Макет) щелкните правой кнопкой мыши на строке Details (Подробности) столбца Name и выберите из контекстного меню команду Expression (Выражение). Измените выражение следующим образом:
    =Code.FullName(Fields!FirstName.Value,Fields!MiddleName.Value, Fields!LastName.Value)
  6. Сохраните отчет и просмотрите результаты на вкладке Preview (Просмотр). Если при вводе кода или выражения в ячейку вы сделали ошибку, то на вкладке Preview (Просмотр) получите сообщение об ошибке.
  7. Теперь можно использовать этот код в других местах, например, в параметре интерактивной сортировки для столбца Name. Хотя более логично выполнить сортировку по фамилии, измените поле сортировки просто для изучения следующим образом: выделите название столбца Name на вкладке Layout (Макет).
  8. Щелкните правой кнопкой мыши ячейку, выберите Properties (Свойства) и перейдите на вкладку Interactive Sort (Интерактивная сортировка).
  9. Замените текущее выражение следующим, после окончания правки нажмите кнопку ОК.
    =Code.FullName(Fields!FirstName.Value, Fields!MiddleName.Value, Fields!LastName.Value)
  10. Сохраните отчет и просмотрите результаты на вкладке Preview (Просмотр). Обратите внимание на то, что столбец Name отсортирован по полному имени, а не по фамилии, как предполагалось.
Свойство Name и свойство Dataset

Некоторые интересные свойства устанавливаются автоматически Конструктором отчета, пока мы разрабатываем макет. Вам нужно знать об этих свойствах и их значении, чтобы полностью разобраться в редактировании отчета.

  • Все элементы отчета идентифицируются по имени. Свойство Name задается как обычно, добавлением порядкового номера после типа элемента, например, textbox1 , textbox2 ... или table1 , table2... Хотя такие имена вполне традиционны и их можно использовать, все же они не очень хорошо подходят для понятного программирования. В мире программирования рекомендуется давать каждому элементу без исключения дружественное к пользователю имя, которое помогает идентифицировать этот элемент при написании кода. Однако в Конструкторе отчетов многие объекты существуют без нашего ведома, пока они по какой-либо причине нам не понадобятся. Следовательно, хотя мы не можем рекомендовать изменять имя каждого элемента, в целом это неплохая практика. В любом случае, вам следует изменять хотя бы имена элементов, используемых в выражениях. Чтобы просмотреть, какие именованные объекты существуют в отчете, можно развернуть раскрывающийся список в верхней части Окна свойств. Есть и другой способ - можно просмотреть непосредственно файл RDL XML и выполнить поиск атрибута Name (Имя) в элементах.
  • Очень важным является также свойство Dataset binding. Некоторые объекты отчета, например, те, которые являются контейнерами или областями данных, "волшебным" образом знают, откуда они должны извлекать данные. Если вы посмотрите значение свойства Dataset на вкладке объекта отчета Table (Таблица), который содержит несколько полей, вы заметите, что в качестве значения этого свойства установлено имя набора данных. В нашем примере это значение - dsEmployeeSales. Эта привязка определяет источник данных для всех объектов, зависимых от данных, внутри этого объекта контейнера. Если вы проверите значение этого свойства в только что созданной таблице, то обнаружите, что оно остается незаполненным до тех пор, пока вы не перетащите в него поле при помощи мыши или не зададите привязку вручную.
Коллекции Reporting Services

Кроме коллекции Fields, которую мы использовали в нашем примере отчета, службы Reporting Services предоставляют и другие коллекции для использования в выражениях отчетов: Globals , Parameters , ReportItems и User. Каждая из этих коллекций объединяет различные типы объектов.

  • Fields. Ссылается на поля, содержащиеся в определенном наборе данных. При использовании коллекции Fields в области данных, например, в таблице, предполагается набор данных, к которому она принадлежит вследствие привязки области данных (привязка области данных устанавливается через свойство Dataset области данных). При использовании вне области данных, коллекция Fields требует определения области действия (путем явного назначения имени набора данных).
  • Globals. Содержит такие объекты, как PageNumber, TotalPages, ReportFolder и ReportName. Элементы из этой коллекции вам придется использовать достаточно часто.
  • Parameters. Содержит все параметры, объявленные в отчете. Если отчет объявляет какие-либо параметры, то их свойства доступны через эту коллекцию.
  • ReportItems. Включает все текстовые поля отчета. Не забывайте, что ячейки таблицы - это тоже текстовые поля. Следовательно, можно обратиться к нужному набору объектов через эту коллекцию.
  • User. Содержит два объекта: User и Language ; однако, к этим объектам можно обратиться только через коллекцию User.
Дополнительная информация Дополнительную информацию об этом можно найти в Электронной документации по SQL Server 2005, тема "Использование глобальных коллекций в выражениях(Reporting Services)".

Заключение

Из этой лекции вы узнали, что такое система отчетов предприятия, и получили некоторые сведения по планированию отчетов. Кроме того, в лекции рассматривалась архитектура служб Reporting Services, ее основные компоненты и задачи, выполняемые каждым из них.

Вы поэкспериментировали с процедурами разработки основного отчета: это создание отчета, настройка источника данных и запроса к данным, создание и редактирование макета отчета, добавление программного кода для выполнения общих операций, а также придание отчету некоторой интерактивности.

В Электронной документации по SQL Server 2005 есть дополнительная информация по каждой из этих тем. Рекомендуется изучить области данных list (список) и matrix (матрица), группирование, область действия выражения, каскадирование параметров, работа с функциями видимости, диаграммы, вложенные отчеты, культура использования языка и отчеты служб Analysis Services.

Краткий справочник по 8 лекции

Чтобы Выполните следующие действия
Создать отчет В BIDS выберите из меню File (Файл) команды New, Project (Создать, Проект). Выделите шаблон Report Server Project (Проект сервера отчетов) и нажмите кнопку ОК. Щелкните правой кнопкой мыши папку Reports (Отчеты)в Solution Explorer (Обозревателе решений) и выберите Add, New Item (Добавить, Создать элемент).
Запустить мастер отчетов В BIDS выберите из меню File (Файл) команды New, Project (Создать, Проект). Выделите шаблон Report Server Project Wizard (Мастер проекта сервера отчетов) и нажмите кнопку ОК.
Создать общий источник данных Щелкните правой кнопкой мыши папку Shared Data Sources (Общие источники данных) в Solution Explorer (Обозревателе решений) и выберите из контекстного меню команду Add New Data Source (Добавить новый источник данных).
Определить набор данных На вкладке Data (Данные) в окне BIDS выберите из раскрывающегося списка Dataset (Набор данных) команду <New Dataset>.
Добавить в отчет Перетащите элемент управления Table (Таблица) из панели элементов в область конструктора.
Связать данные в таблице с отчетом Перетащите мышью поле из панели Dataset (Набор данных) и отпустите его в ячейке таблицы.
Выполнить предварительный просмотр отчета В окне BIDS перейдите на вкладку Preview (Просмотр).
Форматировать элемент управления отчетом Щелкните правой кнопкой мыши элемент управления и выберите Properties (Свойства), чтобы вывести на экран диалоговое окно Properties (Свойства); или выберите объект, выведите на экран Properties window (Окно свойств) и отредактируйте свойства в этом окне.
Сохранить отчет Нажмите кнопку Save (Сохранить) на панели инструментов.
Добавить итог в таблицу отчета Перетащите мышью поле, для которого нужно вычислить итог, из панели Dataset (Набор данных) и отпустите его в поле нижнего колонтитула таблицы.
Условно задать свойство в отчете Выберите пункт <Expression> в раскрывающемся списке свойств. В диалоговом окне Edit Expression (Изменить выражение) введите инструкцию IIf.
Выполнить сортировку содержимого основе значений в столбце В диалоговом окне Properties (Свойства) задайте поля сортировки на вкладке Sorting (Сортировка).
Разрешить пользователям интерактивную сортировку данных В диалоговом окне Properties (Свойства) ячейки флажок Add An Interactive Sort Action To This Textbox (Добавить действие интерактивной сортировки к этому полю).
Настроить фильтр для данных отчета Измените запрос, на котором строится отчет, добавив в него предложение WHERE, которое использует параметр. В меню Report (Отчет) выберите команду Report Parameters (Параметры отчета).