Пошаговое руководство. Создание отчета ReportViewer

В этом пошаговом руководстве показано, как создать простой табличный отчет в проекте приложения Windows в среде Microsoft Visual Studio 2008, основанный на образце базы данных AdventureWorks. К проекту будет добавлен шаблон отчета, заданы сведения о соединении с базой данных, определен запрос, добавлена табличная область данных, а затем на форму будет добавлен элемент управления Windows Forms ReportViewer, чтобы пользователи приложения могли просматривать отчет.

Предварительные требования

Чтобы использовать это пошаговое руководство, необходим доступ к образцу базы данных AdventureWorks для SQL Server 2005. Если используется предыдущая версия AdventureWorks, запрос завершится ошибкой. Дополнительные сведения о получении версии AdventureWorks для SQL Server 2005 см. в разделе Пошаговое руководство. Установка базы данных AdventureWorks.

В этом пошаговом руководстве предполагается, что пользователь знаком с запросами на языке Transaction-SQL и объектами ADO.NET DataSet и DataTable.

Создание нового проекта приложения для Windows

  1. Откройте среду Visual Studio. В меню Файл последовательно выберите команды Создать и Проект.

  2. В области «Типы проектов» выберите элемент Visual Basic.

  3. В области «Шаблоны» выберите пункт Приложение Windows, чтобы создать приложение для Microsoft Windows.

  4. В поле Имя введите SimpleReport.

  5. В поле Расположение введите путь к папке, где будет сохранен проект, или нажмите кнопку Обзор, чтобы перейти в эту папку.

    Откроется конструктор Windows Forms, отображая форму Form1 созданного проекта.

  6. Щелкните форму. В меню Вид выберите пункт Окно свойств. Разверните свойство Размер, чтобы отобразить поля Ширина и Высота. Установите в поле Ширина значение в 500 точек.

Определение соединения с источником данных и таблицы данных

  1. В обозревателе решений щелкните правой кнопкой мыши проект с именем SimpleReport (не решение), укажите пункт Добавить и выберите команду Создать элемент. Если окно Обозреватель решений не отображается, в меню Вид выберите команду Обозреватель решений.

  2. В окне Добавление нового элемента выберите пункт Набор данных. Введите имя набора данных и нажмите кнопку Добавить. Имя по умолчанию — DataSet1.xsd.

    В результате в проект будет добавлен новый XSD-файл, и откроется конструктор наборов данных.

  3. В меню Вид выберите пункт Конструктор. Откройте область элементов и перетащите элемент управления TableAdapter в область конструктора набора данных.

    Запустится мастер настройки TableAdapter.

  4. На странице Выбор подключения базы данных нажмите кнопку Создать подключение.

  5. На странице Добавление соединения выполните следующие шаги.

    • В поле Источник данных выберите значение Microsoft SQL Server.

    • В поле Имя сервера введите сервер, где расположена база данных AdventureWorks.

      Экземпляр SQL Server Express по умолчанию имеет имя (local)\sqlexpress.

    • Из раскрывающегося списка выберите AdventureWorks.

    • Нажмите кнопку ОК, чтобы продолжить работу мастера, а затем нажмите кнопку Далее.

  6. На странице Сохранение строки соединения в файл конфигурации приложения введите имя строки соединения или подтвердите имя по умолчанию — AdventureWorksConnectionString. Нажмите кнопку Далее.

  7. На странице Выбор типа команд выберите Использовать инструкции SQL и нажмите кнопку Далее.

  8. На странице Ввод инструкции SQL введите следующий запрос Transact-SQL, чтобы получить данные о продажах из базы данных AdventureWorks, а затем нажмите кнопку Готово.

    SELECT  S.OrderDate, S.SalesOrderNumber, S.TotalDue AS TotalSales, 
            C.FirstName, C.LastName
    FROM    HumanResources.Employee E INNER JOIN
            Person.Contact C ON E.ContactID = C.ContactID INNER JOIN
            Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    

    Также можно нажать кнопку Построитель запросов, чтобы использовать построитель запросов для создания запроса, и проверить его с помощью кнопки Выполнить запрос.

    В конструкторе наборов данных показано определение DataTable для таблицы DataTable1, где имена полей получены из столбцов и псевдонимов столбцов запроса (OrderDate, SalesOrderNumber, TotalSales, FirstName и LastName). Эти поля из окна «Источники данных» будут использоваться во время привязки данных к областям данных в отчете.

    NoteПримечание.

    Если вам нужно изменить поля в таблице данных, щелкните правой кнопкой мыши заголовок DataTable1 или DataTable1TableAdapter на странице DataSet Designer. Выберите Конфигурация, и мастер настройки TableAdapter будет запущен повторно.

Добавление нового файла определения отчета

  1. В меню Проект укажите команду Добавить и выберите Новый элемент.

  2. В окне Добавление нового элемента выберите Отчет.

  3. В поле Имя введите Sales Orders.rdlc и нажмите кнопку Добавить, чтобы открыть область графического конструктора.

    Область графического конструктора входит в состав конструктора отчетов, компонента среды Visual Studio 2008.

Добавление таблицы в макет отчета

  1. Если файл Sales Orders.rdlc находится в режиме графического конструктора, в меню Вид выберите пункт «Область элементов».

    Откроется область элементов.

  2. В разделе Данные области элементов щелкните элемент «Таблица», а затем щелкните в области конструктора отчета.

    В конструкторе отчетов появится таблица с тремя столбцами, занимающими всю ширину отчета.

  3. Щелкните таблицу, чтобы сбоку и сверху нее появились маркеры строк и столбцов.

  4. В первом столбце щелкните маркер правой кнопкой мыши и выберите команду Вставить столбец слева.

  5. В окне «Свойства» для таблицы table1 разверните узел Размер. По умолчанию окно «Свойства» закреплено под обозревателем решений. Это окно также можно открыть из меню Вид, выбрав пункт «Окно свойств».

  6. Установите для свойства Ширина узла Размер значение 12,192 см. В результате будет задана ширина таблицы, а столбцам будет задана ширина с одинаковыми промежутками для просмотра на форме.

  7. В конструкторе отчетов щелкните область конструктора.

  8. В окне «Свойства» разверните узел Размер и установите для свойства Ширина значение 12,7 см.

  9. В окне «Источники данных» щелкните узел DataTable1, чтобы развернуть его и показать поля данных. Затем выполните следующие шаги.

    • Перетащите поле LastName из окна Источники данных в среднюю строку (строку детализации) первого столбца в таблице.

    • При этом выполняются два действия.

      Во-первых, в ячейку сведений помещается текст =Fields!LastName.Value. Это выражение поля, указывающее значения данных для поля LastName. Поля, добавляемые в строку детализации, всегда указываются в виде выражений.

      Во-вторых, заголовок столбца автоматически помещается в первую строку, непосредственно над выражением поля. По умолчанию заголовок столбца создается из имени поля. Если имя поля задано в стиле языка Pascal, имя столбца будет состоять из слов, начинающихся с заглавных букв и разделенных пробелами. Например, имя LastName будет выглядеть как Last Name.

    • Перетащите поле OrderDate из окна «Источники данных» в среднюю строку (строку детализации) второго столбца в таблице.

    • Перетащите поле SalesOrderNumber из окна «Источники данных» в среднюю строку (строку детализации) третьего столбца в таблице.

    • Перетащите поле TotalSales из окна «Источники данных» в среднюю строку (строку детализации) последнего столбца в таблице.

    На следующей схеме показана табличная область данных, в которой заполнены следующие поля: LastName, OrderDate, SalesOrderNumber и TotalSales.

    Таблица определения отчета, использующаяся по умолчанию

Добавление элемента управления ReportViewer на форму

  1. Щелкните файл Form1.vb в обозревателе решений.

  2. В меню Вид выберите команду Конструктор.

  3. Перетащите элемент управления ReportViewer из раздела Данные области элементов на форму.

  4. Щелкните форму. В окне «Свойства» разверните узел Размер. Задайте необходимые значения для свойств ширины и высоты.

  5. Откройте панель смарт-тегов в элементе управления ReportViewer, щелкнув треугольник в правом верхнем углу. Щелкните раскрывающийся список Выбор отчета и выберите файл Sales Orders.rdlc.

  6. На панели смарт-тегов щелкните элемент Закрепление в родительском контейнере.

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

  7. Нажмите клавишу F5, чтобы построить приложение и просмотреть отчет на форме (необязательно).

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

    Таблица по умолчанию в отчете, готовом для просмотра

Форматирование поля даты

  1. Щелкните правой кнопкой ячейку с выражением для поля OrderDate и выберите команду Свойства. Будет открыто диалоговое окно Свойства текстового поля.

  2. Перейдите на вкладку Формат и нажмите кнопку обзора (), чтобы открыть диалоговое окно Выбор формата.

    В поле Формат выберите группу Стандартные, затем группу Дата и выберите формат даты.

  3. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Выбор формата, а затем нажмите кнопку ОК еще раз, чтобы закрыть окно Свойства текстового поля.

    Диалоговое окно «Выбор формата даты»

  4. (Необязательно.) Нажмите клавишу F5, чтобы построить приложение и просмотреть отчет. В этом случае будет показан столбец даты с примененным форматированием.

Форматирование поля валюты

  1. Щелкните правой кнопкой мыши ячейку с выражением для поля TotalSales и выберите пункт Свойства.

  2. Перейдите на вкладку Формат и нажмите кнопку обзора (), чтобы открыть диалоговое окно Выбор формата.

  3. В поле Формат выберите группу Стандартные, затем группу Валюта и выберите формат валюты.

  4. Нажмите кнопку ОК, а затем нажмите кнопку ОК еще раз, чтобы закрыть окно Свойства текстового поля.

    Диалоговое окно «Выбор формата валюты»

  5. (Необязательно.) Нажмите клавишу F5, чтобы построить приложение и просмотреть отчет. В этом случае будут показаны значения столбца Total Sales с форматом валюты.

Форматирование заголовков таблицы

  1. Щелкните таблицу, чтобы сбоку и сверху нее появились маркеры строк и столбцов.

    NoteПримечание.

    Маркеры имеют вид серых клеток сверху и рядом с таблицей. Они используются для выполнения различных действий со столбцами, строками и с таблицей в целом. Маркеры, расположенные сверху таблицы, являются маркерами столбцов. Маркеры, расположенные сбоку таблицы сверху вниз, являются маркерами строк. Маркер, расположенный на стыке маркеров строк и столбцов, называется угловым маркером. Пример маркеров таблицы см. в разделе Добавление табличных областей данных (конструктор отчетов Visual Studio).

  2. Выберите маркеры строки для первой строки, которая содержит метки заголовков столбцов, а затем нажмите кнопку Полужирный.

  3. Щелкните строку заголовка таблицы и нажмите кнопку Цвет фона. Перейдите на вкладку Веб и выберите цвет MistyRose. Нажмите кнопку ОК.

  4. Нажмите клавишу F5, чтобы построить приложение и просмотреть отчет (необязательно). На следующей схеме представлен отформатированный отчет.

    Представление таблицы по умолчанию с форматированием

Определение группы для табличного отчета

  1. Щелкните таблицу, чтобы сбоку и сверху нее появились маркеры строк и столбцов.

  2. Щелкните правой кнопкой мыши маркер одной из строк и выберите команду Вставить группу.

  3. На вкладке Общие в поле Группировать по выберите =Fields!LastName.Value в первой строке и =Fields!FirstName.Value во второй. Данные будут сгруппированы по имени менеджера по продажам. Обратите внимание, что данные можно группировать по полям, которые не используются в табличной области данных, но доступны из полей DataTable1.

    Вкладка «Общие», страница «Свойства группирования и сортировки»

  4. Нажмите кнопку ОК.

    В таблицу добавлены верхний и нижний колонтитулы группы.

Вычисление сводных данных для группы

  1. Щелкните строку верхнего колонтитула группы и нажмите кнопку Цвет фона. Перейдите на вкладку Веб и выберите цвет LightCyan. Нажмите кнопку ОК.

  2. Замените значение TotalSales, повторяющееся в каждой строке, выражением в верхнем колонтитуле группы, которое представляет объединенный итог для группы.

    1. Щелкните правой кнопкой мыши верхний колонтитул группы для столбца Total Sales и выберите пункт Свойства. Откроется диалоговое окно Свойства текстового поля.

    2. Скопируйте текст, приведенный ниже, и вставьте его в раскрывающийся список Значение.

      =Sum(Fields!TotalSales.Value)
      
    3. Примените к этому текстовому полю форматирование валюты.

  3. Замените имя, повторяющееся в каждой строке, выражением в верхнем колонтитуле группы, содержащим две строки. В первой строке содержатся имя и фамилия. Во второй строке приводится количество продаж со значением, отличным от NULL.

    1. Выделите выражение из строки детализации столбца Last Name и удалите его.

    2. Щелкните правой кнопкой мыши строку верхнего колонтитула группы для столбца «Last Name» и выберите пункт Выражение. Скопируйте следующий текст и вставьте его в область окна Изменение выражения.

      Fields!FirstName.Value + " " + Fields!LastName.Value + ": " + vbCrLf + Count(Fields!SalesOrderNumber.Value).ToString()
      

    На следующей схеме показан редактор выражений после выполнения этого шага.

    Диалог редактирования выражения для текстового поля группы

  4. (Необязательно.) Нажмите клавишу F5, чтобы построить приложение и просмотреть отчет. На рисунке ниже показаны строки таблицы, сгруппированные по имени каждого менеджера по продажам. В верхнем колонтитуле каждой группы приведена сводка по строкам детализации группы, показывающая имя менеджера по продажам, количество продаж и общую сумму продаж.

    Представление группы таблиц в обработанном отчете

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

  1. Выберите табличную область данных и откройте окно Свойства таблицы.

  2. Перейдите на вкладку Группы. Автоматически будет выбрана единственная определенная группа — table1_Group1. Нажмите кнопку Изменить. Откроется диалоговое окно Группирование и сортировка.

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

  3. Перейдите на вкладку Сортировка. В поле Сортировать по выберите из раскрывающегося списка пункт <Выражение...>. Введите в поле Изменение выражения выражение, по которому будет выполняться сортировка. Например,

    =Count(Fields!SalesOrderNumber.Value)

  4. Нажмите кнопку ОК.

    Диалоговое окно группирования и сортировки

  5. (Необязательно.) Нажмите клавишу F5, чтобы построить приложение и просмотреть отчет. Теперь отчет отсортирован по количеству продаж, совершенных каждым менеджером по продажам.

    Представление отсортированной группы таблиц

Сортировка строк детализации в пределах группы в табличном отчете

  1. Щелкните таблицу, чтобы сбоку и сверху нее появились маркеры строк и столбцов.

  2. Щелкните правой кнопкой мыши угловой маркер и выберите команду Свойства. Откроется диалоговое окно Свойства таблицы.

    NoteПримечание.

    Угловой маркер таблицы расположен в точке пересечения маркеров столбца и строки.

  3. На вкладке Сортировка выберите в поле Сортировать по значение =Fields!TotalSold.Value. В поле Направление выберите значение По убыванию. В результате данные будут отсортированы по объему продаж, начиная с самого большого значения.

  4. Нажмите кнопку ОК.

    На следующей схеме показан примерный вид диалогового окна «Свойства таблицы».

    Диалог свойств таблицы, вкладка сортировки

  5. (Необязательно.) Нажмите клавишу F5, чтобы построить приложение и просмотреть отчет. На следующей схеме показана вторая страница результирующего отчета, чтобы отобразить группы с несколькими строками детализации.

    Представление сгруппированных данных отчета, отсортированных по строке детализации

Добавление сводных данных в нижний колонтитул табличного отчета

  1. Выделите ячейки Sales Order и Total Sales в строке нижнего колонтитула таблицы. Щелкните выделенные ячейки правой кнопкой мыши и выберите команду Объединить ячейки.

    В результате освободится место для форматирования суммы всех продаж для таблицы.

  2. Щелкните правой кнопкой мыши объединенную ячейку и выберите команду Свойства.

  3. В раскрывающемся списке Значение введите следующее выражение:

    =Sum(Fields!TotalSales.Value)

  4. Примените форматирование валюты к объединенной ячейке.

  5. Щелкните в ячейке текстового поля рядом с объединенными ячейками и создайте метку. Например, введите «**Итого продаж:**». Эта метка является не выражением, а просто текстовой строкой.

  6. Задайте для строки нижнего колонтитула цвет фона, совпадающий со строкой верхнего колонтитула (необязательно).

    На следующей схеме представлено определение таблицы.

    Таблица определения отчета с нижним колонтитулом

  7. (Необязательно.) Нажмите клавишу F5, чтобы построить приложение и просмотреть отчет. В готовом к просмотру отчете нажмите кнопку LastPage на панели инструментов отчета, чтобы перейти на последнюю страницу отчета. Прокрутите страницу до нижнего края, чтобы увидеть итоговое значение продаж.

    Представление таблицы с результатами в нижнем колонтитуле

См. также

Справочник

Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing

Понятия

Использование панели смарт-тегов для задач ReportViewer

Другие ресурсы

Образцы и пошаговые руководства