Компьютер Пресс № 2-98

Работаем с Crystal Reports 6.0. (часть 2)

Сергей Маклаков

В предыдущей статье было рассмотрено создание простых отчетов, внесение, форматирование и группировка полей, создание графиков. В настоящей статье продолжается знакомство с инструментальной средой Crystal Reports, будут рассмотрены способы связывания таблиц, способы создания специальных суммирующих отчетов, матричных отчетов, подотчетов и применение модуля Dictionary.

Настройка среды разработки

Crystal Reports позволяет изменять многие настройки, принятые по умолчанию. Эти настройки касаются: Настройки можно изменить в меню File|Options. Рассмотрим основные возможности конфигурации среды.
Опции на закладке Layout позволяют задать внешний вид среды разработки. Опция Show Grid в Design Window/ Preview Window по умолчанию включена, что позволяет располагать поля только по координатной сетке (grid). Этот путь делает очень простым аккуратное расположение полей по отношению к другим полям. Можно выключить эту опцию и располагать поля произвольно. По умолчанию Crystal Reports показывает сокращенные имена секций в левой части в Design Window. Если эти имена мешают, эту опцию (Show Short Section Names in Design) можно выключить, например для получения большего пространства на экране при создании отчета. Если опция Show Field Names включена, в Design Window показываются имена для каждого поля в отчете, если нет, показывается символическое представление типа полей (например XXX для строкового поля или 555 для числового). Если опция Insert Detail Fields Titles включена, Crystal Reports автоматически присваивает заголовок по умолчанию полей в секции Page Header, когда поле вносится в секцию Detail. Заголовок по умолчанию - это подчеркнутое имя поля БД. Поскольку в базе данных имя поля может называться совсем не так, как хотелось бы назвать его в отчете, эту опцию можно отключить. Другое решение - воспользоваться возможностями словаря Crystal (см. ниже) и переименовать поле, дав ему то имя, которое более понятно пользователю.
Закладка Fields позволяет задавать формат новых полей, вставляемых в отчет. На закладке размещены 7 кнопок, которые соответствуют 7 типам полей- String, Number, Currency, Date, Time, Date/Time, Boolean. Типы полей отчета должны соответствовать полям в БД.
Закладка Font позволяет изменить шрифты по умолчанию или для различных типов объектов в отчете. В закладке Font есть 5 кнопок - Fields (поля), Summary Fields (суммирующие поля), Group Name Fields (заголовки групп), Text Objects (текстовые объекты) и Field Titles (заголовки полей), каждая из которых вызывает диалог для настройки шрифтов по умолчанию для соответствующего объекта.
Опции закладок Database и SQL предназначены для тонкой настройки Crystal Reports при работе с теми или иными источниками данных. Например, в закладке SQL можно задать имена сервера, БД и пользователя, принимаемые по умолчанию. Опция Case - Insensitive SQL Data указывает, учитывать ли регистр в шаблоне при поиске в БД. Появившаяся в шестой версии закладка OLAP позволяет задать опции многомерного анализа данных при работе со специализированной БД Essbase Server.

Связывание таблиц

Почти всегда необходимая для отчета информация находится в нескольких БД или таблицах. Crystal Reports не ограничивается только одной БД для создания отчета. Можно сразу же задать несколько БД при создании нового отчета, либо добавлять БД по мере создания. Связь между БД будет осуществляться по полям. Например, информацию о компаниях можно использовать в отчете по продажам. Crystal облегчает нам задание связей БД. Если выбрать Database|Add Database to Report из меню, и добавить БД, появится Visual Linking Expert и покажет дополнительные БД. Можно вызвать диалог Visual Linking Expert непосредственно из меню (Database|Visual Linking Expert).
Индексированные поля помечаются цветной стрелкой. Для баз данных PC (под этим термином подразумеваются плоские таблицы, т.е. не реляционные источники данных) можно использовать только индексированные поля, для SQL баз- любую пару полей. Кнопка Таблицы (Tables...) позволяет подключить для отчета дополнительные таблицы. Можно переместить таблицы внутри диалога Visual Linking Expert. Для этого нужно кликнуть по таблице и не отпуская кнопки, переместить ее на нужное место.
Выбрав таблицы для отчета, необходимо задать связи между ними. Связь устанавливается, если установить маркер на поле одной таблицы и , не отпуская левой кнопки мыши, вести к полю другой таблицы. Если связь установлена корректно, Crystal установит ее, если нет - возникнет сообщение об ошибке. Для удаления связи нужно выделить ее (выделенная связь помечается цветом) и кликнуть по кнопке Delete. Для редактирования связи нужно кликнуть по линии правой кнопкой мыши и выбрать во всплывающем меню пункт Options. В диалоге Link Options есть ряд настроек, смысл которых важен для понимания работы Crystal Reports в целом. Опция When Linking To Two Files From This File указывает на то, как происходит объединение трех (и более) плоских таблиц, связанных по одному полю. Например, у нас есть три таблицы - Клиенты,
CustNum
Name
1
Jones
2
Smith
3
Miller
Заказы
OrderNum
CustNum
Amt1
11
1
10.00
22
1
20.00
33
2
30.00
44
2
40.00
55
3
30.00
66
3
30.00
и Кредиты,
CreditNum
CustNum
Amt2
C1
1
10.00
C2
2
30.00
C3
2
40.00
C4
3
30.00
связанные по полю CustNum. В случае задания опции Look up both files at the same time, генератор отчетов будет брать запись из первой таблицы Клиенты, затем искать соответствующую запись из Заказов, затем соответствующую запись из Кредитов. После нахождения первой записи процесс повторяется. В результате отчет будет выглядеть так:
CustNum
OrderNum
Amt1
CreditNum
Amt2
1
11
10.00
C1
10.00
1
22
20.00
C1
10.00
2
33
30.00
C2
30.00
2
44
40.00
C3
40.00
3
55
30.00
C4
30.00
3
66
30.00
C4
30.00
В случае Look up all of one file, then all of the other для каждой записи из Клиентов ищутся все записи из Заказов, потом для каждой записи из Клиентов ищутся все записи из Кредитов:
CustNum
OrderNum
Amt1
CreditNum
Amt2
1
11
10.00
1
22
20.00
1
C1
10.00
2
33
30.00
2
44
40.00
2
C2
30.00
2
C3
40.00
3
55
30.00
3
66
30.00
3
C4
30.00
И, наконец, в случае Look up all combinations of the two files для каждой записи из Клиентов сначала ищется запись из Заказов, затем все соответствующие записи из Кредитов, следовательно, в результате в отчет войдут все возможные комбинации связанных записей:
CustNum
OrderNum
Amt1
CreditNum
Amt2
1
11
10.00
C1
10.00
1
22
20.00
C1
10.00
2
33
30.00
C2
30.00
2
33
30.00
C3
40.00
2
44
40.00
C2
30.00
2
44
40.00
C3
40.00
3
55
30.00
C4
30.00
3
66
30.00
C4
30.00
Очевидно, что содержимое отчета будет зависеть от очередности таблиц. Если необходимо, например, сделать таблицу Заказы первой, нужно изменить направление связей в Visual Linking Expert.
Для работы с SQL/ODBC - источниками в диалоге Link Options существуют настройки SQL Join Types. Помимо эквисоединений можно задать другие типы соединений, то есть в предикате, определяющем условие соединения, использовать вместо равенства другие логические условия. Однако будьте осторожны, в случае использования неравенств при объединении трех и более таблиц, логика выполнения запроса становится неочевидной, и можно получить в результате неожиданный на первый взгляд набор данных. Отметим, что если для SQL/ODBC - можно задавать опции Left/Rigth Outer Join, то для плоских таблиц всегда выполняется Left Outer Join.
Хотя Visual Linking Expert запрещает установку некоторых типов связей (например, нельзя связать плоские таблицы по неиндексированным полям) это ограничение можно обойти, использовав в отчете связанные подотчеты (Subreports), о которых будет рассказано ниже.

Распространение отчетов

Когда отчет создан, можно просмотреть его в других отделах и организациях, не имеющих Crystal Reports. Crystal Reports позволяет распространять копии готового отчета, кроме того имеет несколько дополнительных возможностей: Для экспорта отчета в электронный файл, который может быть прочитан другими приложениями, например Microsoft Word for Windows, нужно открыть отчет (Open) и выбрать из меню File|Print|Export, либо нажать кнопку из палитры инструментов. Появится диалог Export. В списке Destination мы имеем выбор: сохранить отчет на дисковом файле, либо направить документ по электронной почте. Выберем Disk File, кликнем по списку Format и выберем формат документа Microsoft Word for Windows. Будьте осторожны - хотя данные отчета экспортируются корректно, некоторые опции форматирования и взаимное расположение полей могут быть нарушены. Если Crystal Reports не экспортирует отчет прямо в формат приложения, можно экспортировать отчет в формат, который понимает приложение, например ASCII.
Другая опция - экспорт в электронную почту. Конкретный экспорт сильно зависит от системы E-mail'а В диалоге Export выберем Format (Word for Windows). В списке Destination должны быть перечислены установленные системы электронной почты. Диалог Logon будет зависеть от Вашей почтовой системы.
В Crystal Reports имеется возможность создания выполняемой версии отчета. Это позволяет выполнить отчет там, где не установлен Crystal Reports. Для создания и сохранения скомпилированного отчета нужно выбрать из меню Report|Compile Report. Появится диалог Compile Report. В этом диалоге нужно указать имя файла (по умолчанию- имя отчета), директорию и устройство для сохранения откомпилированного отчета. Откомпилированный отчет будет иметь расширение exe. Нужно также указать программную группу, в которую будет помещен откомпилированный отчет, и будет ли создаваться дистрибутив для распространения отчета. Для запуска отчета на машине пользователя, на которой не установлен Crystal Reports, необходимо сначала установить run-time модуль. В дальнейшем можно передавать на эту машину только exe-файлы. Если выбрать Distribute the report after / Yes и кликнуть по OK, сначала отчет компилируется, создается программная группа, и затем открывается диалог Report Distribution Expert. Для компиляции нового отчета, его необходимо сохранить (File / Save). Если при этом установлена опция File / Save Data with Report (сохранять данные вместе с отчетом), то отчет откомпилируется вместе с данными и на машине пользователя для просмотра отчета не нужно будет иметь не только Crystal Reports, но и источник данных, то есть скомпилированный отчет становится полностью автономным. Для обеспечения компактности exe-файла данные при компиляции сжимаются.
Диалог Report Distribution Expert имеет три закладки. На закладке Options можно указать отчеты, которые будут распространяться с дистрибутивом (при первоначальной установке) и директорию, в которую будет размещен дистрибутив. Полученный runtime модуль не имеет лицензионных ограничений на распространение, это означает, что приобретать Crystal Reports необходимо только для разработки отчетов, для их просмотра Crystal Reports генерирует свободно распространяемый модуль.
Для выполнения скомпилированного отчета нужно дважды кликнуть по иконке отчета в соответствующей программной группе. Появляется диалог запуска отчета, который содержит три секции: в верхней части показывается где и когда нужно распечатать отчет, в средней находится кнопка, вызывающая диалог настройки окна просмотра отчета и в нижней части можно указать, обновлять ли данные или использовать сохраненные. Если в отчете при задании условий выборки используются параметры, появится диалог задания параметров (о формулах условий выборки и параметрах подробнее будет рассказано в следующей статье). Окно просмотра отчета имеет возможность изменения масштаба, навигатор групп (Smart Navigation), возможность обновления данных и экспорта отчета в другие форматы.

Суммирующий отчет и отчет DrillDown

Отчет, о котором было рассказано в предыдущей статье - это отчет с включением всех строк Detail. Возможна ситуация, когда необходима только суммирующая информация, без ненужных деталей.. Такой отчет очень просто создать из Detail. Нужно просто скрыть секцию Detail. В диалоге Section Expert (меню Format|Section) необходимо выбрать Deteils и выбрать опцию Hide Section.
Отчет DrillDown нужен для того, чтобы представить в отчете суммирующую информацию отдельно от секции Detail. Например, есть суммирующий отчет по городам, и необходимо посмотреть детальный отчет только по одному городу. В режиме просмотра суммирующего отчета в Preview Window видно что курсор, двигающийся по суммирующему полю, превращается в лупу. Это означает, что информация в секции Detail доступна для DrillDown. Если дважды кликнуть по суммирующему полю, открывается новый отчет и секция Detail становится после суммирующего поля. Программа создает новую закладку после закладок Preview и Design c группой полей в ней. Если создается DrillDown для другой группы, открывается другая закладка. Можно видеть details для каждой секции DrillDown, кликнув на желаемую закладку. Если закрыть суммирующий отчет, закрываются также все отчеты detail. По существу отчет DrillDown - это совокупность нескольких отчетов - суммирующего и одного или нескольких детальных. При экспорте или печати выводится только один отчет, активный, т.е. тот, на котором установлена в данный момент закладка.

Почтовые метки

Часто необходимо для рассылки создавать почтовые метки (например адреса для конвертов). Crystal Reports позволяет сортировать, группировать и отбирать данные и просто создавать почтовые метки, такие как: Хотя эти метки предполагают различный размер, Crystal Reports позволяет устанавливать и печатать эти данные быстро и с минимальными затратами. Для создания меток нужно выбрать из меню File/New... , затем кликнуть по кнопке . Появится диалог Create Report Expert. Выберем нужный нам источник данных (закладка Data) и поля( закладка Fields), после чего на закладке Label можно либо выбрать этикетку из стандартного списка, либо создать этикетку собственного формата, если не удовлетворяют существующие.
Для создания собственной метки нужно выбрать User Defined Label и изменить установки так, как требуется:

Отчет Cross Tab

Структура современных БД, как правило, приведена к т.н. нормальным формам для обеспечения компактности и непротиворечивости хранимой информации. При этом данные могут храниться в "узком" формате. Например, в таблице Платежи могут быть колонки Имя Клиента, Квартал, Сумма Платежа. Часто необходимо представить информацию в "широком" формате, например, в отчете нужно иметь поля Имя Клиента, Сумма Платежа За Первый Квартал, Сумма Платежа За Второй Квартал и т.д. Crystal Reports может создать такой отчет (он называется здесь Cross Tab, иногда такой отчет называют матричным отчетом) автоматически.
Crystal Reports предоставляет простой интерфейс для создания матричного отчета. Для создания Cross Tab нужно выбрать из меню File/New. Когда откроется галерея отчетов, нужно кликнуть по кнопке Cross Tab и в закладке Data диалога Create Report Expert выбрать необходимый источник данных. Для создания отчета Cross Tab, во-первых, необходимо определить в закладке Cross-Tab, какие поля будут использоваться как заголовки строк, заголовки колонок и суммирующие поля.
Список полей (Fields) подобен диалогу Insert Field. Он содержит доступные для отчета поля и формулы.
Список колонок (Columns) содержит список полей, которые можно использовать в качестве заголовков колонок. Эти заголовки будут располагаться по горизонтальной оси отчета.
Список строк (Rows) содержит список полей, которые можно использовать в качестве заголовков строк. Эти заголовки будут располагаться по вертикальной оси отчета.
Список Summarized Field содержит список полей, которые можно использовать в качестве суммирующих. Значение этого поля будет располагаться в отчете на пересечении строк и колонок.
Кнопка New Formula позволяет создать в отчете формулу. Кликнув по этой кнопке, можно вызвать диалог Formula Name. После ввода имени формулы появляется диалог Formula Editor, в котором можно создать формулу. Если формула не содержит поля из открытой БД, например [1=1], она не появится в списке полей и не может быть использована в отчете Cross Tab. Кнопка Edit Formula позволяет редактировать существующую в отчете формулу. Эта кнопка становится активной только если формула выделена.
В отчете Cross Tab можно задавать несколько суммирующих полей. В качестве суммирующих полей можно использовать формулы (о формулах подробнее будет рассказано в следующей статье). Можно создать отчет Cross Tab с более чем одним уровнем заголовков строк или колонок. Для выбора поля нужно установить на него курсор в списке полей и кликнуть по кнопкам Add Row (Add Column, Set Summarized Field). В отчете также будут представлены суммы колонок и строк. Можно отформатировать поля в Design Window, кликнув по полю правой кнопкой мыши и выбрав Format Field. Для форматирования Cross Tab нужно кликнуть правой кнопкой мыши по таблице Cross Tab и выбрать Format Cross Tab из меню. Можно быстро поменять колонки и строки Cross Tab, кликнув правой кнопкой мыши и выбрав Pivot Cross Tab.

Подотчеты

Подотчеты позволяют создавать отчет, объединяющий в себе несколько самых разных отчетов, причем информация подотчетов может быть связана с информацией основного отчета, а может быть совершенно независима от него. Нажав на кнопку (или выбрав в меню Insert/Subreport...), можно добавить в основной отчет подотчет. Появляется диалог Insert Subreport, на закладке Subreport которого следует либо выбрать имя существующего отчета (Choose a report), либо указать имя нового подотчета (Create a subreport) и кликнуть по кнопке Report Expert. Затем в диалоге Report Expert можно создать новый отчет, который будет использоваться как подотчет. Новый подотчет может быть связан по значению полей с основным отчетом. Для связывания подотчета следует перейти в закладку Links диалога Insert Subreport и указать сначала поле основного отчета, по которому производится связывание (верхняя часть закладки), затем поле подотчета по которому производится связывание (нижняя часть закладки).
После этого, кликнув по кнопке OK, можно разместить подотчет в любой секции основного отчета. По умолчанию подотчет заключен в рамку. Кликнув правой кнопкой мыши по подотчету и выбрав в контекстном меню пункт Format Subreport, можно убрать рамку или провести какое- либо другое форматирование подотчета.
Механизм связывания подотчетов достаточно гибкий, что позволяет связывать в подотчете данные, которые невозможно связать при помощи Visual Linking Expert: После внесения подотчета в основной отчет рядом с закладкой Design появляется закладка, соответствующая подотчету. Переключившись на такую закладку можно редактировать подотчет также, как основной отчет в режиме Design. Хотя основной отчет может содержать сколько угодно подотчетов в любой секции, подотчет не может содержать другой подотчет, т.е. нельзя создавать вложенные подотчеты.

Словари Crystal

Часто камнем преткновения создания отчета является интерфейс между создателем отчета и БД. Словари Crystal дают возможность настройки интерфейса с целью облегчения создания отчета. Словарь делает проще и понятней организацию данных, используемых в качестве источников для отчетов. Используя словарь, можно выбрать, связать, организовать и переименовать составляющие, которые специфичны для конкретного отчета, можно запомнить этот модуль как готовый к использованию. Часто терминология БД понятна лишь немногим техническим специалистам. Можно изменить имена объектов БД в словаре (например, назвав их по-русски) для того, чтобы сделать их более понятными для прочих сотрудников Вашей организации. Можно также ввести пояснительный текст. Благодаря созданию словаря, конечный пользователь сможет просматривать данные, но не сможет изменить связи и т.д. В результате пользователь сможет сам построить и модифицировать отчет с минимальной поддержкой.
Для построения словарей необходимо выбрать из программной группы Seagate Crystal Reports 6.0 и запустить модуль Crystal Dictionaries. Появляется окно Crystal Dictionaries. Для создания словаря нужно кликнуть по кнопке New. Появляется диалог Crystal Dictionary, в котором имеется пять закладок.
Интерфейс словаря подобен интерфейсу создания отчетов. На закладке Tables необходимо указать источники данных и список таблиц для будущих отчетов. Обратите внимание на то, что каждой таблице можно дать синоним (кнопка Alias...). На рисунке выше двум таблицам уже присвоены синонимы Отделы и Служащие. При создании отчета пользователь будет видеть в Crystal Report Designer синонимы, а не настоящие имена таблиц.
Закладка View позволяет присвоить синонимы не только таблицам, но и колонкам БД (кнопка Alias...). Для выделенного поля можно удалить существующее имя и набрать синоним. Синоним будет показываться в отчете как заголовок колонки. Если кликнуть правой клавишей мыши и выбрать help text, можно добавить текст подсказки. Этот текст появится, когда курсор устанавливается на соответствующем поле в словаре данных или в Crystal Reports. Кликнув по кнопке New Formula, можно добавить в словарь формулу, однако прежде чем добавить формулу, нужно добавить все синонимы полей. Если сначала добавить формулу, а затем синонимы, формула не сможет расположить соответствующие поля (подробнее о синтаксисе формул будет расcказано в следующей статье). Закладка Links позволяет установить связи между таблицами, тем самым освободив конечного пользователя от необходимости понимать особенности взаимосвязей при хранении данных.
Создав словарь данных, можно использовать его в Crystal Reports. Создавая новый отчет, можно выбрать словарь данных в качестве источника (кнопка Custom>>, затем Dictionary в Report Gallery). После выбора словаря можно оперировать источниками данных как обычно, только вместо настоящих имен объектов БД будут видны синонимы, которые также будут использоваться в качестве заголовков колонок отчета в секции Page Header.
В следующей статье будут описаны модуль Crystal Query Designer, особенности работы с SQL/ODBC источниками и способы применения формул Crystal Reports.

Координаты автора:
Учебно-консалтинговый центр Interface Ltd.,
Тел. (095)135-55-00, 135-25-19, 135-77-81,
e-mail: mail@interface.ru
http://www.interface.ru


Interface Ltd.

Ваши замечания и предложения направляйте по адресу: webmaster@interface.ru

Reklama.Ru. The Banner Network.