СТАТЬЯ |
21.08.02
|
Возможность формирования отчёта в Crystal Reports с различной
ориентацией страниц
© Александр Бородовицын, технический специалист Interface Ltd.
В нашу фирму (Interface Ltd.) среди многих других вопросов по приобретению, установке, использованию или обучению работе с теми или иными программными продуктами, поступает немалая доля вопросов на тему: "А как мне сделать в той или иной программе так вот, как я хочу?"
Один из таких вопросов
- это вопрос по продукту Crystal
Reports фирмы Crystal Decisions, который является самым популярным на
сегодняшний день средством формирования разнообразных отчётных документов, основанных
на информации из различных баз данных.
Вопрос этот звучит
примерно так: "Можно получить в Crystal Reports отчёт*, в котором присутствует
различная ориентация сформированных страниц (портретная, ландшафтная)?"
(см рис. 1).
Рис. 1. Пример отчёта с различной ориентацией страниц
Сразу же следует сказать, что подобный режим вряд ли можно считать "естественным" для отчётов: при просмотре напечатанного подобного документа приходится вертеть его туда-сюда, как бывает при просмотре современных альбомчиков с фотографиями (если все листы уложены одинаково), или же как-то сгибать листы "ландшафтной" ориентации, чтобы они поместились в стандартном скоросшивателе. И вообще, про ориентацию бумаги можно говорить, когда имеем дело с распечаткой: в самом деле, если уж без широких таблиц, которые не "влезают" в один экран, ну никак не обойтись, что ж, формируйте отчёт на более широких листах, а пользователь для просмотра уменьшит масштаб, или будет прокручивать страницу...
* или результирующий многостраничный документ. Условимся в дальнейшем называть его просто "отчётом", тем более, что это понятие согласуется с терминологией пакета Crystal Reports.
!
|
Желательно,
чтобы при разработке отчёта Вы в полной мере владели:
|
С другой стороны, не следует забывать, что все программные пакеты по формированию отчётов ориентированы сейчас на отображение полученных документов, прежде всего, на экранах компьютеров, т.е. в сетях Intranet/Internet. А пользователь далее может делать с ними, что захочет: сохранять, печатать, импортировать... В связи с этим нельзя не упомянуть такой замечательный продукт фирмы Crystal Decisions, как Crystal Enterprise ). Время доступа к информации - это тоже деньги (time как всегда money). И дело вовсе не в "безбумажной" технологии, хотя и это тоже.
!
|
Crystal Enterprise - система для управления корпоративной отчетностью в масштабе предприятия. Основанная на Web-архитектуре, система хранит отчеты Crystal Reports на сервере и обеспечивает моментальный доступ к ним как внутри предприятия (через Intranet) так и вне его (через Internet) Подробнее об этой системе см. Crystal Enterprise |
1-й подход
Всё-таки формировать (и печатать) не один, а два (возможно, более) отчётов, выбрав для каждого свои настройки принтера: размер бумаги и ориентацию.
Используя такие мощные механизмы Crystal Report, как программирование событий и признаков, т.е. задание формул в полях форматирования, выборку, сортировку, группировку и т.п., можно не только "разделить" данные на два отчёта, но и выполнять более сложные действия, связанные с "нестандартностью" отчёта. Так, например, требуется печатать на страницах "общего" отчёта сквозную нумерацию страниц, особенно если листы с различной ориентацией идут "вразброд". Для этого в оба отчёта необходимо вставить формулы для расчёта пропущенных/распечатанных страниц.
Поясню сказанное на примере. Предположим, что нам нужно распечатать отчёт по клиентам из некоей базы данных. Причём для тех клиентов, у которых есть дополнительные услуги, печатать расшифровку этих услуг с ориентацией листа "ландшафтная", а остальных - без расшифровки, на стандартных листах с ориентацией "портретная".
Таким образом, мы получим отчёт (сформированный из двух) с листами различной ориентации и возможно, разного формата со сквозной нумерацией страниц. После распечатки потребуется вручную разобрать отчёт по страницам.
При необходимости и по желанию можно запрограммировать некоторую оболочку (Visual Basic, Delphi, Visual C++... , не принципиально) по автоматическому запуску одного, а затем другого отчёта. Причём, сложностей тут никаких, потеря только времени на программирование...
2-й подход
Второй подход
заключается в возможности Crystal Reports выводить поля, повёрнутые на 90 или
270 градусов. Т.е., в одном отчёте формируются как листы "портретного"
отображения, так и "ландшафтного". Естественно, это имеет смысл только
для печати: вряд ли пользователь захочет читать на экране монитора "повёрнутый"
текст) (см. всё сказанное во вступлении).
Итак, для того, чтобы реализовать предыдущий пример для этого подхода, сделаем
следующее:
Рис. 2. Дизайн отчёта с секциями Details различного формата
Это достаточно легко реализуется, т.к. у нас нет группировок, и на одном листе выводится только одна запись из БД. Если же нам надо выводить таблицу (а зачем ещё отчёты?), то задача значительно усложняется. Надо будет "вручную" формировать текстовые поля, соответствующие одной записи таблицы, посчитать, сколько таких "повёрнутых" полей поместится на листе, разместить их и т.п. Конечно, это потребует более значительных усилий по сравнению с первым подходом.
3-й подход
Суть этого подхода такова. Мы формируем "нормальный" отчёт с форматом принтера, при котором у нас разместятся листы любой ориентации. Например, А3 "ландшафтная". В отчёте только нужно будет создать по две секции для Page Header, Page Footer, Group Header, Group Footer, Details для разных ориентаций (рис.3). И, наверное, будет проще, если в начале (и/или в конце) страниц с "ландшафтной" ориентацией добавите какие-то символьные метки.
Рис. 3. Дизайн отчёта с двумя различными секциями Group Header
А затем Вы
экспортируете созданный отчёт в какой-нибудь формат, например, в MS Word. Создав
там небольшой макрос, по внесённым меткам переформатируете Ваш отчёт, внеся
разделы и установив для каждого свою ориентацию.
Процесс этот несложно автоматизировать, запуская MS Word и макрос в фоновом
режиме.
Вряд ли можно считать представленные выше способы единственными и наилучшими.
Выбирайте для себя наиболее приемлемый и простой вариант.
Дополнительная информация
Дополнительную информацию Вы можете получить в компании Interface Ltd.
Interface
Ltd. Отправить E-Mail http://www.interface.ru |
|
Ваши
замечания и предложения отправляйте
автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 21.08.02 |