Нові підходи до Crystal Reports. Report Designer Component, Різне, Інтернет-технології, статті

Можливо, ви раніше читали про використання 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 та інших другорядних об’єктів.



  1. Запустіть Centura Team Developer
  2. Перехід до , – CTD завантажить список всіх зареєстрованих COM-компонент.
  3. Виберіть “Crystal Reports ActiveX Designer Run Time Library”, Місце розташування має вказувати на каталог Seagate Software з програмними файлами. Цей список містить усі зареєстровані COM-компоненти. На вашій машині можуть бути присутні й інші компоненти, але вони не зареєстровані. Це може бути зроблено за допомогою кнопки “Browse” або з командного рядка: “regsvr32 [library.dll]”.
  4. Натисніть “Next”.
  5. З’явиться список доступних класів, починаючи з CRAXDRT_Application, які містяться в craxdrt.dll. Це місце, де ми вибираємо функціональні можливості, маючи на увазі бібліотечні об’єкти, які ми хочемо використовувати. Виберіть кожен елемент окремо або для економії часу натисніть “Select All”.
  6. Виберіть “All” для генерації установок. Якщо ви запитаєте себе, що все це значить, ви можете знайти досить гарне пояснення в розділі “ActiveX Automation Wizard” файлу довідки.
  7. Виберіть “Advanced” для установки режимів генерації функцій властивостей. За замовчуванням це “PropGet” і “PropSet”, які особисто мені не подобаються. Ви можете захотіти вибрати “get” і “set”. Наприклад, для зміни властивості bold (жирний) для текстового об’єкта така установка призведе до того, що ці функції в охоплює класі будуть названі “getBold” і “setBold”. Я поясню значення терміна “охоплює клас” трохи пізніше. Зараз вийдіть з діалогу, натиснувши кнопку “OK”.
  8. Поверніться в програму-майстер ActiveX, натисніть “Finish” – з’явиться вікно прогресу, поки програма-майстер генерує у фоновому режимі деякі класи.

Як тільки програма-майстер закінчить роботу, ви знову опинитеся в своєму оточенні, в якому змінилося не так вже й багато. По крайней мере, ви можете помітити, що гілку “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.



  1. Введіть глобальну функцію PrintReport () з одним текстовим параметром “p_sFileName” і повертається значенням типу Boolean.
  2. Додайте наступний код для цієї функції:

    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


  3. Додайте в SAM_AppStartup виклик цієї функції з передачею в якості параметра імені вашого тестового звіту. Наприклад, так: PrintReport (“C: Test.rpt”). Подбайте про подвоєння зворотного косою риси.
  4. Натисніть F7 для виконання програми. В результаті повинен з’явитися діалог друку Crystal Reports. Натискання OK повинно привести до друку звіту.

Додавання можливості попереднього перегляду


Для додавання можливості попереднього перегляду звіту в SQLWindows виконайте кроки, наведені нижче:



  1. Запустіть знову програму-майстер ActiveX і виберіть Crystal Report Viewer Control (переконайтеся, що обрана бібліотека crviewer.dll).
  2. Виберіть всі елементи, запитавши “All” – для цього може знадобитися перейти в розширений режим і зробити зміни там.
  3. Додайте вікно форми, натисніть кнопку ActiveX в контрольній панелі, виберіть Crystal Report Viewer Control і помістіть його примірник у вікні форми.
  4. Додайте до форми наступну функцію:

    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


  5. В SAM_CreateComplete додайте виклик функції showReport (“C: Test.rpt”) і запустіть додаток.

Це був короткий курс роботи з компонентами ActiveX в цілому і з Crystal Reports зокрема.


В наступній статті ми розглянемо інтерфейси з SQLBase і зв’язок через ODBC.


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*