Подотчеты RDC

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

RDC реализует в Visual Basic все возможности подчиненных отчетов (подотчетов) Crystal Reports. Если вы импортируете файл .RPT, содержащий подотчеты, в RDC, подотчеты будут импортированы вместе с главным отчетом. К тому же вы можете в любое время добавить свои собственные подотчеты в окне проектирования RDC, просто щелкнув правой кнопкой мыши на пустой области отчета и в появившемся контекстном меню выбрав пункт Inserts Subreport (Вставить^ Подотчет); о том, как создаются подотчеты, более подробно рассказывалось в главе 12.

Уникальность RDC заключается в способе, посредством которого подотчет подстра- ивается ПОД объектную модель. При отображении основного отчета в окне проектирования RDC подотчет появится в виде контура объекта, точно так же, как и в Crystal Reports. Однако если вы щелкнете на этом объекте подотчета, точно так же, как и при щелчке на любом другом объекте отчета, в окне Properties отобразится список всех его свойств (рис. 25.19).

Рис. 25.19. Подотчет в окне конструктора ActiveX Designer

Для объекта Sub report можно определять некоторые свойства времени проектирования, подобно другим объектам в отчете. Одним из таких свойств является имя подотчета. Присваивая подотчету осмысленное имя, вы облегчите себе работу при написании кода для своего приложения.

После того как вы добавите объект Subreport в основной отчет, он будет обрабатываться подобно текстовому объекту, полю, строки, окну или любому другому объекту, появляющемуся в главном отчете объектной модели Report. Однако поскольку подотчет содержит свой собственный набор полей и объектов, существующих отдельно от главного отчета, объектная модель может отображать их несколькими способами. Объекты подотчета (поля, формулы, разделы, линии и так далее) фактически отображаются как часть главного объекта Report. Перед именем объекта RDC добавляет имя подотчета и символ подчеркивания.

Представьте, что у вас есть главный отчет, содержащий несколько полей базы данных, которые вы не переименовывали после создания отчета (Fieldl, Field2 и прочие). Этот главный отчет также содержит подотчет, который был назван subTop5Products. Объекты Subreport фактически становятся частью главного отчета. Теперь вы решили определить свойства для объекта Report с именем Fieldl, который будет ссылаться на первое поле в главном отчете. Если вы затем решите определить свойства Report для объекта subTop5Products_Fieldl, это будут свойства для первого поля в подотчете.

Также в главном отчете предусмотрен объект SubreportObject для каждого содержащегося в главном отчете “заполнителя” подотчета. Этот объект имеет самые разноо

Подотчеты RDC

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

' Отключение отображения рамки вокруг объекта подотчета

Report.subTop5Products.TopLineStyle = О

Report.subTop5Products.LeftLineStyle = 0

Report.subTop5Products.BottomLineStyle = 0

Report.subTop5Products.RightLineStyle = 0

Здесь работа с объектом SubreportObject осуществляется из объекта Report (для ссылки на который используется имя подотчета subTop5Products). Всем четырем свойствам стиля линии присваиваются нулевые значения, а это значит, что во время выполнения рамка вокруг объекта Subreport отображаться не будет (то есть будет невидимой).

Несмотря на этот “хитроумный” способ совместного использования объектов и определения свойств для заполнителя подотчета, не все свойства, методы и события подотчета будут доступны из главного объекта Report. И, если вы используете внешний файл .RPT, эти опции также будут недоступны. Поскольку подотчет — это, по сути, дополнительный отчет, который появляется только в главном отчете, вам необходим способ, который бы позволял управлять поведением подотчета с помощью той же объектной модели, что применяется в главном отчете.

Чтобы получить его, сначала объявите объект типа Report из библиотеки CRAXDRT или CRAXDDRT (это библиотеки, предоставляемые RDC). Затем воспользуйтесь методом OpenSubreport главного отчета, чтобы создать еще одну переменную объекта Report для подотчета. После этого вы сможете определять свойства, выполнять методы и перехватывать события для главного отчета с помощью его исходной объектной переменной, а для подотчета — с помощью его собственной объектной переменной. Этот подход хорошо иллюстрирует следующий фрагмент кода:

Dim Subreport as CRAXDRT.Report

На заметку! He исключено, что вам также придется предоставлять удостоверения для баз данных в подотчетах отдельно от баз данных главного отчета. Примеры того, как это делается, уже приводились ранее в этой главе, в разделе “Предоставление удостоверения для подключения к базе данных*.

Создание новых отчетов во время выполнения

RDC позволяет не только настраивать существующие отчеты (как импортируемые из существующих файлов .RPT, так и создаваемые непосредственно в конструкторе VB), но также и создавать новые (“с нуля”) в Windows-приложении. Интерфейс Report Creation API (именно так называют этот интерфейс в компании Business Objects) позволяет с помощью кода на Visual Basic создать совершенно новый отчет “с нуля”, включая таблицы и поля, разделы отчета и объекты отчета. Создав базовую структуру отчета, вы сможете

работать с разделами отчета или форматировать его объекты в коде Visual Basic. В свое приложение вы сможете даже включить компонент Embeddable Report Designer, тем самым предоставив пользователям возможность интерактивно изменять отчет практически так же, как и с помощью конструктора отчетов ActiveX в RDC.

Когда процесс разработки отчета и настройки способов его взаимодействия с пользователями в коде будет завершен, вы сможете не только просматривать отчет в Report Viewer, распечатывать его на принтере или экспортировать, но и сохранять его в виде файла .RPT, доступного для открытия как в Crystal Reports, так и в любом другом специализированном приложении. Главное, не забывайте о том, что лицензионное соглашение Crystal Reports запрещает вам использовать эти технологии проектирования отчетов для создания “конкурирующих продуктов”.

Внимание! Интерфейс Report Creation API доступен только в версии Crystal Reports XI Developer

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

должна приобрести копию Crystal Reports XI Developer Edition.

Существует два основных способа создания отчета во время выполнения:

•    Создать все элементы отчета полностью с помощью кода.

•    Использовать в своем приложении элемент управления ActiveX под названием Embeddable Report Designer для предоставления конечному пользователю возможности создавать отчеты в интерактивном режиме.

Создание нового отчета с помощью кода
Форматирование заголовка
Сохранение отчета
Использование конструктора Embeddable Report Designer
Обзор распространения

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


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