СТАТЬЯ |
20.12.01
|
©
Thomas Althammer
, Ice Tea Group, LLC.
Переведено БНТП по заказу Interface
Ltd.
Возможно, вы раньше читали об использовании Crystal Reports , в Centura Pro публиковались статьи об этом. Кое-кто из вас, может быть, даже имеет некоторый опыт использования этого инструментария. Возможно, вы имели дело с Crystal Reports Print Engine (CRPE), собственным интерфейсом через внешние функции и загружали сложные структуры. Иногда как для квалифицированных специалистов, так и для обычных людей, это не самое продуктивное занятие.
Существует современный интерфейс RDC (Report Designer Component - компонент проектирования отчетов), основанный на технологии COM. Он содержит полное иерархическое представление всех функциональных возможностей Crystal Reports.
На первый взгляд Crystal Reports обычное MDI приложение. Вместо работы с документами или таблицами вы работаете с шаблонами отчетов. Эти шаблоны отчетов содержат описания и раскладки для создания во время исполнения осмысленных (хочется надеяться) отчетов на основе структурированных данных из базы данных и описаний, содержащихся в файле RPT.
Иерархическое представление начинается с объекта Application, который содержит методы для установления связи с базой данных и создания новых или открытия существующих отчетов. В свою очередь объект отчета содержит методы для изменения свойств отчета и включает Sections (секции), Areas (области), Parameters (параметры) и другие свойства, которые в свою очередь являются объектами со своими собственными функциональными возможностями. Последние возвращают объект отчета, который имеет несколько свойств и методов для доступа к частям загруженного файла и изменения этих частей. В действительности, как только станет ясной общая концепция, это чрезвычайно просто и легко понять и не нужно долго возиться, чтобы что-то начать делать. Однако, как всегда, здесь есть несколько препятствий, которые нужно преодолеть.
Для получения предварительной информации о предлагаемых функциональных возможностях, вы можете обратиться к следующим источникам:
Лично я предпочитаю RDC Browser по сравнению с файлом справки. Это достаточно разумный путь изучения COM-компонентов.
Теперь у нас есть вся информация, необходимая для понимания того, что делают COM-объекты. Ниже приводится короткая пошаговая инструкция, как инкорпорировать Crystal Reports в ваше приложение. Здесь предполагается, что Crystal Reports 8 и Centura Team Developer 1.5.x корректно установлены на вашей машине. В основном те же шаги применимы и для Centura Team Developer 2000 , однако существует небольшое различие из-за нового проводника ActiveX и других второстепенных объектов.
Как только программа-мастер закончит работу, вы снова окажетесь в своем окружении, в котором изменилось не так уж и много. По крайней мере, вы можете заметить, что ветвь "classes" изменила свое состояние так, что теперь ее можно раскрывать. Посмотрите на все эти классы - узнаете их? Мы их только что видели в качестве объектов, содержащихся в библиотеке craxdrt.dll.
Что вообще такое COM? COM - это способ разделять функциональные возможности и логику между приложениями. Использование COM-компонент должно быть так же просто, как указание используемых библиотек. Так это работает в VisualBasic, если вы когда-нибудь обращали на это внимание. Однако, для SQLWindows необходимы так называемые "охватывающие классы", представляющие функциональные возможности инкорпорированных компонент. Функции, которые содержатся в этих классах, не имеют собственной логики, а только вызывают функции COM-объекта - все это необходимо для успешной компиляции в SQLWindows.
Например, раскройте класс CRAXDRT_IApplication в CTD, и взгляните на функцию "OpenReport", чтобы увидеть, что происходит в SQLWindows.
Пока что никаких сюрпризов... Хотите один? Просто нажмите F8! Вы только что споткнулись на двух проблемах программы-мастера ActiveX. Первая из них - ограничение на длину имени в 32 символа в SQLWindows. Единственный обходной путь - вручную изменить имена классов. Например, CRAXDRT_IRunningTotalFieldDefinitions нужно изменить на CRAXDRT_IRunningTotalFieldDefs. Вторая проблема - ошибка программы-мастера ActiveX, которая по каким-то причинам приводит к игнорированию некоторых элементов. Вам пройдется проделать кое-какую ручную работу, объем которой зависит от типа и размера используемых объектов. Вообще, из соображений производительности и затрат на сопровождение, разумно импортировать с помощью программы-мастера ActiveX только необходимые элементы.
Хорошая новость в том, что все это изменилось с появлением Centura Team Developer 2000.
Перед тем, как мы снова запустим программу-мастер и просто выберем несколько классов, нам нужно удалить старую библиотеку. Найдите подкаталог AXLibs в каталоге установки Centura Team Developer. Удалите Crystal Reports 8 ActiveX Designer Run Time Library.apl и снова запустите программу-мастер в SQLWindows. Теперь выберите только CRAXDRT_Application, CRAXDRT_IApplication, CRAXDRT_Report и CRAXDRT_IReport. Если хотите, установите префиксы функций "get" и "set" вместо "PropGet" и "PropSet". Убедитесь, что в этот раз вы выбрали "Full" вместо "All".
При выполнении следующих шагов предполагается, что у нас есть тестовый отчет, который базируется на драйвере ODBC CRGUP, устанавливаемом вместе с Crystal Reports.
Для использования функциональных возможностей Crystal Reports в вашем приложении давайте попробуем выполнить следующие шаги для распечатки отчета из SQLWindows.
Function: PrintReport
Description:
Returns
Boolean:
Parameters
String: p_sFileName
Static Variables
Local variables
Boolean: bOk
Variant: vOptional
CRAXDRT_Application: oApplication
CRAXDRT_IReport: oReport
Actions
Set bOk = TRUE
Call vOptional.MakeOptional( )
!
Set bOk = bOk AND oApplication.Init( )
Set bOk = bOk AND oApplication.OpenReport( p_sFileName,
vOptional, oReport )
Set bOk = bOk AND oReport.PrintOut( vOptional, vOptional,
vOptional, vOptional, vOptional )
!
Return bOk
Добавление возможности предварительного просмотра
Для добавления возможности предварительного просмотра отчета в SQLWindows выполните шаги, перечисленные ниже:
Function: showReport
Description:
Returns
Boolean:
Parameters
String: p_sFileName
Static Variables
Local variables
Boolean: bOk
Variant: vOptional
CRAXDRT_Application: oApplication
CRAXDRT_IReport: oReport
Variant: vObject
Actions
Set bOk = TRUE
Call vOptional.MakeOptional( )
!
Set bOk = bOk AND oApplication.Init( )
Set bOk = bOk AND oApplication.OpenReport( p_sFileName,
vOptional, oReport )
! Assign the report object to the preview control
Set bOk = bOk AND vObject.SetObject( oReport )
Call ax1.setReportSource( vObject )
Call ax1.ViewReport( )
!
Return bOk
Это был краткий курс работы с компонентами ActiveX в целом и с Crystal Reports в частности.
В следующей статье мы рассмотрим интерфейсы с SQLBase и связь через ODBC.
Дополнительная информация
Crystal Reports
Centura Team Developer 2000
Учебные курсы по продуктам Centura Software
Курсы по средствам разработки и распространения
отчетов Сrystal Reports и Seagate Info
Приобрести
продукты Crystal Decisions в электронном магазине ITshop
Приобрести
CTD в Интернет-магазине ITshop.ru
Дополнительную информацию Вы можете получить в компании Interface Ltd.
Обсудить на форуме
Crystal Decisions
Отправить
ссылку на страницу по e-mail
Interface Ltd. Отправить E-Mail http://www.interface.ru |
|
Ваши
замечания и предложения отправляйте
автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 20.12.01 |