Новые подходы к Crystal Reports. Report Designer ComponentThomas Althammer, Ice Tea Group, LLC.
Возможно, вы раньше читали об использовании Crystal Reports. Кое-кто из вас, может быть, даже имеет некоторый опыт использования этого инструментария. Возможно, вы имели дело с 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.
Добавление возможности предварительного просмотра Для добавления возможности предварительного просмотра отчета в SQLWindows выполните шаги, перечисленные ниже:
Это был краткий курс работы с компонентами ActiveX в целом и с Crystal Reports в частности. В следующей статье мы рассмотрим интерфейсы с SQLBase и связь через ODBC. |