Условное форматирование и форматирование разделов

Оценить
(0 голоса)

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

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

Приложение Xtreme Orders позволяет пользователю указывать, должен отчет отображаться только как сводный отчет или нет. В случае установки этого флажка VB-приложе- ние должно скрывать раздел подробностей отчета так, чтобы в отчете отображались только промежуточные суммы групп. Кроме этого, вам потребуется отрегулировать внешний вид двух разделов заголовков страниц отчета (Page Header а и Page Header Ь), а также двух разделов заголовков групп Group Header #1 (Group Header #la и Group Header #lb). Это необходимо для того, чтобы настроить два разных раздела заголовков полей, которые должны отображаться по-другому, если пользователь выберет представление отчета как сводного, а не как подробного. Если пользователь выберет представление отчета как подробного, заголовки полей должны отображаться в верхней части каждой страницы, вместе с подзаголовком и заголовком отчета меньшего размера. Если же будет выбрано представление отчета как сводного, заголовки полей должны отображаться в разделе заголовка группы на вкладке детализации и только после того, как пользователь дважды щелкнет на группе. Поскольку никакие подробные данные в основном окне отчета отображаться не будут, показывать заголовки полей в нем тоже не имеет смысла.

И, наконец, вы наверняка захотите сделать так, чтобы, если отчет показывает подробные данные, в нем отображался раздел Group Header #1а, содержащий поле имени группы. Он будет указывать на то, к какой группе относятся расположенные ниже заказы. Однако если отчет показывает только сводные данные, отображение и заголовка группы и ее нижнего колонтитула было бы излишним: нижний колонтитул группы уже содержит имя группы, поэтому наличие еще и заголовка группы будет выглядеть странно. Однако, скорее всего, потребуется, чтобы этот раздел заголовка группы с именем группы отображался во вкладке детализации. Получается, что вам необходимо отрегулировать внешний вид сразу четырех разделов на случай, если пользователь выберет опцию Summary Report (Сводный отчет). В табл. 25.1. показаны возможные варианты отображения этих

разделов во время выполнения.

В таблице видно, что в некоторых случаях разделы должны быть полностью подавлены (так, чтобы они не отображались даже на вкладке детализации), а не просто скрыты (когда они отображаются на вкладке детализации, но не на основной вкладке Preview). Это обусловлено несколько запутанными отношениями между областями и разделами. Скрываться могут только целые области (например, вся область Group Header #1), но не отдельные разделы (например, раздел Group Header #1а). Чтобы лучше понять, о чем идет речь, выделите какой-нибудь раздел в окне для проектирования и взгляните на диалоговое окно Properties: вы увидите там свойство Suppress (Подавить), а не Hide (Скрыть).

Условное форматирование и форматирование разделов

Реализовать эти эффекты в коде для приложения Xtreme Orders довольно сложно. Во-первых, вам придется определить правильную комбинацию скрываемых областей и подавляемых разделов, то есть что будет отображаться в окне Preview, а что — на вкладке детализации. Если область скрывается, ни один из содержащихся в ней разделов не будет отображаться в главном окне Preview. А это значит, что вам придется определить, какие разделы этой области будут отображаться на вкладке детализации на случай, если пользователь попытается перейти в ней на более высокий уровень детализации. Далее вам понадобится решить, где лучше установить свойство Hide для данной области, а также, где лучше установить свойство Suppress для разделов, которые находятся внутри данной области, или других разделов, которые не являются скрытыми.

Поскольку свойство Hide доступно только для всей области, вам придется установить свойство HideForDrillDown для соответствующего объекта Area в коллекции Areas. Поскольку свойство Suppress должно устанавливаться для отдельных разделов, вы можете просто сослаться на нужные разделы в окне проектирования RDC по их именам и установить для них свойство Suppress. Представьте, что разделу Page Header b в диалоговом окне Properties было присвоено имя РНЬ (при импорте отчета этот раздел назывался Section 3). Всем остальным разделам в окне проектирования RDC также были присвоены имена, но более описательные. Раздел Group Header #1а получил имя GH1A, а раздел Group Header #lb — GH1B.

Учитывая все вышесказанное, а также варианты, приведенные в табл. 25.1, проанализируйте следующий фрагмент кода, взятый из приложения-примера Xtreme Orders:

' Скрыть/показать разделы

With Report If chkSummary Then .Areas("D").HideForDrillDown = True .PHb.Suppress = True

.Areas ("GH111) .HideForDrillDown = True .GH1A.Suppress = False .GH1B.Suppress = False Else

.Areas("D").HideForDrillDown = False .PHb.Suppress = False

.Areas("GH1").HideForDrillDown = False .GH1A.Suppress = False .GH1B.Suppress = True End If 'chkSummary

End With 'Report

Обратите внимание на то, что здесь выполняется форматирование как объектов Area для области подробностей и области Group Header #1, так и отдельных разделов. Области могут форматироваться только из их коллекции, а разделы — прямо в объекте Report путем указания их имени.

На заметку! Вы можете переходить на более низкие уровни иерархии объектов и фактически определять свойство Suppress для элементов коллекции Sections внутри объекта Area. Хотя такой подход несколько усложняет код, его применение является обязательным, если вы используете внешний файл .RPT', который в отличие от встроенного в RDC конструктора ActiveX не отображает имена отдельных разделов.

Событие Format
Выбор пункта назначения вывода
Изменение источника данных во время выполнения
Несвязанные поля
Перехват событий Report Viewer

Добавить комментарий


Защитный код
Обновить