Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

9.6. Формирование отчетов средствами Crystal Reports

Пакет CrystalReportsфирмы Seagate Software (www.img.Sea­­ga­­te.com) [19] является автономным средством формирования от­­четов. Отчеты, под­готовленные этим пакетом, можно корректировать от­дельно от при­ло­же­ния.Для вызоваCrystalReportsвыполните ко­мандуAdd-Ins/Report Designer илиПуск/Программы/Crystal Reports. Для создания нового отчета нажмите кноп­куCreate a New Reportи появится окно (рис. 9.6.1).

Рис. 9.6.1. Окно мастеров отчетов

КнопкаCustomпозво­ляет отказаться от услуг мас­теров и перейти в режим ручного проектирования от­чета с чистого листа непос­ред­ствен­но вручную сред­ст­­­ва­ми конструктора отче­тов, вы­б­рав нужный ва­риант ти­па отчета (отчет, пере­к­рест­ный запрос, поч­то­вая на­клей­ка); далее, на­жав кноп­куData File,выбе­рем нуж­ную базу для отчета. КнопкаAnother Reportпозволяет с проектировать отчет на ос­нове уже существующего.

Покажем работу мастера на нашем примере.

Выберем вариант мастера Standard, и появится первый шаг мастера. Нажмем кнопкуData Fileдля выбора базы. Вернемся на первую страницуTableи, используя кнопкуDelete,удалим ненужные табли­цы и запросы, оста­вив один базовый запрос.

Перейдем на страницу Fields(рис. 9.6.2) и вы­берем поля, которые вклю­чаются в отчет в порядке их следования на листе отчета.

Рис. 9.6.2. Выбор полей отчета

Кнопка Formulaисполь­зуется для формирования вычис­ляемой ко­лон­­ки отчета, на­при­мер процента выполненных ра­бот на стройке. В полеColumn Headingуказывают­ся заголовки колонок. Перейдем на страницу сор­ти­ровкиSort(рис. 9.6.3) и вы­берем поля сортировки ‑ наимено­вания населенного пункта и за­казчика.

Перейдем на страницу итогов Total(рис. 9.6.4). Страница состоит из отдельных вкладок. Каждая вкладка содержит описание полей с итоговой обработкой для отдельного уровня группиров­ки. В полеTotal Fieldsдля груп­пы населенных пунктов оставим только итоговые поля ‑ сметная стои­мость и объем выполненных работ, удаляя остальные кнопкойRemo­ve,и для этих полей укажем операцию суммирования. Допускаются раз­лич­ные итоговые операции: Sum (суммирование), Average (среднее по группе), Maximum (максимальное значение по группе), Minimum (мини­маль­ное значение по группе), Count (число записей в группе) и др.

Рис. 9.6.3. Выбор полей сортировки

Рис. 9.6.4. Формирование итогов

Поле Add Grand Totalsзадает режим формирования общих итогов по всему отчету. КнопкаBrowse Datавыводит все значения текущего поля.

Перейдем на следующую вкладку (наименование заказчика) и удалим все поля из окна Total Fields. На странице Selectможно указать условия отбора записей, используемых в отчете. Заголовок отчета и его внешний вид задаются на странице Style. После формирования отчета нажмем кнопкуPreview Reportи увидим окно предварительного просмотра (рис. 9.6.5).

Рис. 9.6.5. Окно просмотра отчета Crystal Reports

Для корректировки формы используется страницаDesign(рис. 9.6.6).

Рис. 9.6.6. Окно конструктора отчета Crystal Reports

Весь отчет делится на горизонтальные полосы (секции): Title(заго­ловок отчета),Page header(заголовок страницы),Details(детальная по­ло­са),Page footer(итоги по странице),Grand Total(итоги по отчету),Sum­ma­ry (окончание отчета),#n(за­го­ло­вок и подножие группы уровня n). Ко­ман­дойFile/Optionsуста­нав­ли­ваются па­ра­мет­ры среды отчета: ка­та­лог с ба­зой данных, каталог по умол­чанию (стра­­ни­цаDatabase); форматы и шриф­ты полей (Fields, Fonts) и др.

Рассмотрим основые правила и приемы работы с конструктором.

На поле формы находятся объекты, с которыми нужно ра­бо­тать: их размещать, выделять, перемещать, изменять, копировать, удалять.

Размещение объектов

Если нажать кнопкуInsert a Database Fieldна стандартной панели, то появится одноименное окно со списком доступных полей (рис. 9.6.7), и мышкой можно перенести поле в нужное место. Тексты размещаются на форме кнопкойInsert a Text Field.

Для размещения вычисляемых полей (формул) нажмите кнопкуInsert a Formula Field, и появится окноInsert Formulaсо списком имен, ранее сформированных формул. Выбирайте нужную. Если го­­то­вых формул нет, то в полеFormula Nameвведите имя формулы и наж­­мите кнопкуOK; появится окно для формирования (рис. 9.6.7).

Рис. 9.6.7. Окна формирования формулы и списка полей

Перенос поля, функции или операции в полеFormula textпроизво­дит­­ся двойным щелчком или кнопкойSelect. КнопкаCheckпро­веряет пра­­виль­­ность формулы. КнопкаBrowse Field Dataвклю­ча­ет в форму­лу нуж­ное значение текущего поля в окнеField.

Insert a Summary‑ формирование итогового значения (суммы, среднего, числа записей и др.) по нужной группе (по заказчику) для выбранного объекта в детальной полосе (например, суммирование сметы).

Имеются кнопки для размещения диаграмм, рисунков, линий и прямоугольников.

Спе­циаль­ные поля (номер листа, теку­щая дата) размещаются в отче­те командой Insert/Special Fields.

Выделение объектовосуществляется перед началом работы с объ­­­ек­том. Для выделения одного объекта достаточно щелкнуть по нему мыш­кой. Для выделения группы объектов нужно щелкать мышкой по объ­ек­там при нажатой клавишеShiftили нажать кнопкуSelect Fieldsи про­вести рамку мышкой для выделения объектов, попавших в рамку.

Перемещение и изменение размеров объектовосуществляется мыш­­кой, а для точной подгонки используются клавиши со стрелочками; при нажатой клавишеShiftизменяется размер объекта или группы выделенных объектов.

Изменение свойств объектапроизводится вызовом контекстного меню щелчком правой кнопкой мыши по нужному объекту. КомандуChange Formatможно непосредственно вызвать двойным щелчком по объекту.Удаление выделенных объектов производится клавишейDel.

Рассмотрим еще несколько полезных кнопок.

Undo Last Change- отменить шаг корректировки. Можно отменить любое число шагов корректировки.

Search For …- поиск в отчете строки по условию, которому удов­лет­воряют поля записи, из которой формируется эта строка. После нажатия кноп­ки появится окно для формирования условия поиска или для продолжения поиска (рис. 9.6.8). На каждой странице этого окна ука­зы­вает­ся условие для поля, имя ко­торого указано в заголовке стра­ницы. КнопкойNewможно до­ба­вить в окно допол­ни­тель­ное поле. Если пе­ред ее нажа­ти­ем выде­лить нужные колон­ки, то эти поля ока­жутся на страницах окна. Условия на разных страницах свя­заны логической опе­рацией “И”.

Рис. 9.6.8. Окно поиска строки отчета

Кнопкой Find Againможно найти следующую строку. Переклю­чателямиUpиDownможно установить направление поиска строки назад или вперед соответственно.

Select Record‑ кнопка, которая задает условие отбора записей или групп, вклю­чаемых в отчет (установка фильтра). Окно диалога анало­гично предыдущему окну (рис. 9.6.8), но имеет дополнительные кноп­ки по формированию условияShow FormulaиFormula Editor.

Zoom report … ‑ кнопка увеличения или уменьшения окна предва­рительного просмотра отчета.

Dicard Saved... ‑ повторное формирование отчета. Если исходная база была изме­не­на, то следует использовать данную кнопку.

Set record or group sort order‑ сортировка записей по допол­нитель­ным полям, которые ранее не были использованы при группировке.Группировка отчета(например, по наименованию заказчика) вы­пол­­ня­ется командойInsert/Group Section.

Нижняя панель содержит кнопки редактирования выделенного объ­ек­та (слева направо): имени, размера и начертания шрифта, вырав­ни­ва­ния, сти­ля оформления объекта и всего отчета.

Мастер отчетов Listingпредназначен для формирования отчетов-описей, в которых не формируются итоги по группам.

Мастер перекрестных таблиц Cross ‑ Tab (рис. 9.6.9) позво­ля­ет груп­пировать данные в таблицу, первая колонка которой содержит наиме­но­­вания строк (например, насе­лен­ных пунктов). Следующие ко­лонки со­дер­жат значения некото­рого поля исходной таблицы или запрос (наиме­но­ва­­ния заказчи­ков).

Рис. 9.6.9. Окно мастера перекрестных таблиц

В клетках таблицы содер­жит­ся итоговое значение неко­торого поля (сумма объемов всех работ, выполненных по отдель­ному заказчику и населенному пункту). На странице Cross Tabпе­ретаскиваете нужные поля в ок­наRows, Columns и Sum­ma­rized Field.

Мастера отчетов дают пользователю возможность во время просмотра отчета запоминать заголовок нужной группы на отдельной вкладке окна просмотра (помечать нужную группу), если дважды щелкнуть мышкой по заголовку или по подножию этой группы. Это позволяет пользователю быстро вернуться на просмотр всех строк помеченной группы, включая все строки вложенных и детальных групп, даже если вывод этих групп был заблокирован при проектировании отчета, щелкнув мышкой по нужной вкладке.

Мастера отчетовSummary и Drill Downпозволяют формировать отчеты с блокировкой вывода детальных секций отдельных заголовков или подножий групп.

Мастер Top Nформирует отчеты с определенным числом N старших (Top) или младших (Bottom) уровней; остальные уровни выводятся как один под указанным именем.

Мастер Graphформирует отчеты с диаграммами.

Мастер Mail Label формирует почтовые наклейки.

Вызов отчета из приложения

Построив отчет, например под именем “reportstoiki.rpt” в каталоге приложения, нужно уметь вызывать его из приложения. Для этого нажмем клавиши ^Tи выберем строкуCrystal Report Control; элемент управленияCrystal Reportразместится на панели объектов. Разместим его на форме в любом месте, так как он будет виден на форме только в режиме конструктора под именем, например, Crystalreport1.

Процедура вызова может иметь вид:

Crystalreport1.ReportFileName=App.Path+“\reportstoiki.rpt” ‘имя отчета

Crystalreport1.RetrieveDataFiles‘обновление данных, используемых в отчете

Crystalreport1.Printreport ‘формирование отчета

Свойство ReportFileNameзадает имя файла с описанием отчета, а методPrintreportвыводит отчет. Для вывода отчета в файл следует допол­ни­тельно указать значения трех свойств этого объекта:

Destination=2 ‑ вывод в файл;

PrintFileName‑ имя файла с текстом отчета;

PrintFileType=n ‑ формат вывода, например: 17 - Microsoft Word.

Вывод на экран производится, если свойствоAction=1.Из окна просмотра отчет можно оперативно вывести на печать кнопкойPrintили в файл нужного формата кнопкойExport.

В новой версии Crystal Reports8.5 имеются следующие допол­ни­тель­ные воз­мож­ности: под­чи­ненные отчеты, совместное отображение раз­лич­ных ти­пов отчетов, пря­мой доступ к другим СУБД (Oracle, Microsoft SQL Server и др.), поддержка Web в формате HTML и нереляционных источников данных,OLAP‑об­ра­бот­ка, формирование диаграмм и др.

Общий порядок проектирования отчета конструктором (для лю­бых языков программирования и СУБД, используюшихCrystalReports)

  1. Разрабатывается эскиз формы отчета, который согласовывается с пользователем отчета.

  2. Вызывается CrystalReportsи его конструктор. Устанав­ли­вает­ся источник данных для отчета.

  3. Формируются объекты, выводимые в детальной полосе (обычно переносом мышкой нужного поля из окна InsertDatabaseField).

  4. Производится группировка записей отчета и их сортировка.

  5. Формируются заголовки (наименования групп) и подножия групп (итоговые значения по группам отчета).

  6. Формируются итоги по отчету

  7. Формируется заголовок листа: наименование отчета, поля с номера­ми листов и с текущей датой расчета, заголовки колонок, рамки.

  8. Формируются титульный и итоговый листы,

  9. Уточняются форматы выводимых значений, тексты, шрифты, их размеры и стили; выравниваются объ­екты; форма доводится до оконча­тель­ного вида и сохраняется на диске.

  10. Формируется объект (командная кнопка, пункт меню), ини­ци­иру­ю­щий формирование отчета.

Примерформирования отчета с двумя уровнями груп­­пи­ров­­ки (по наименованиям населенных пунктов и заказчиков) с ито­га­ми (рис. 9.6.10, 9.6.11)cданными из базового запроса базы “Строительство” (п. 9.1).

Рис. 9.6.10. Окно просмотра отчета Crystal Reports

  1. Создадим новое приложение.

  2. Вызовем Crystal Reports коман­дой Add-Ins/Report Designer. Наж­мем кнопки Create a new report, Custom/Custom report/Data File и выберем базу “Строительство”.

  3. Перенесем мышкой последовательно из окна InsertDatabaseFieldв детальную полосу из базового запроса (слева направо) поляNs(наиме­но­ва­ние стройки),M(мощность),Ss(смета),Sf(освоено). Нажмем кнопкуInsert a formula fieldдля формирования и размещения в конце детальной полосы формулыOsatalos=Ss-Sf(осталось ос­воить).

  4. Командой Insert/Group Sectionвыберем из базового запроса полеNnpдля группировки первого уровня записей по наименованию на­се­лен­но­го пункта. Повторим эту команду для выбора поляNzдля группировки второго уровня записей по наименованию заказчика. Нажмем кнопкуSet record or group sort orderдля дополнительной сортировки по полюNs.

Рис. 9.6.11. Окно конструктора отчета Crystal Reports

  1. Перенесем из базового запроса поля Nnp(наименование насе­лен­но­го пункта) иNz(наименование заказчика) в полосы заголовков групп пер­вого (#1:Nnp) и второго уровней (#2:Nz) соответственно. Выделим в детальной полосе полеSsи нажмем кнопкуInsert a summary. Появится окно Insert summary. В первом поле этого окна выберем операцию сум­ми­ро­вания (Sum), а во втором поле ­­‑Group#1 (итоговая операция по груп­пе первого уров­ня ‑ по населенному пункту). Повторим эту операцию для груп­­пы второго уровня (Group#2). Аналогичным образом сформируем ито­ги по полямSfиOstalosв подножиях групп первого (Nnp) и второго (Nz) уровней. Разместим соответствующие надписи (итого по на­се­лен­ному пункту и заказчику). Выделим в детальной полосе полеSsи выполним командуInsert/Grand Total. Появится окно Insert Grand Total. В поле этого окна выберем операцию сум­ми­ро­вания (Sum). Аналогично раз­мес­тим в полосеGrandTotalитоги по отчету для полейSfиOstalos.

  2. Используя кнопку Insert a text field, выведем в заголовок листа наименования отчета и его колонок. КомандамиInsert/Special Field/Page Number FieldиInsert/Special Field/Print Date Fieldвыведем в заголовок листа поля с теку­щим номером листа и датой соот­­ветственно.

  3. Доведем форму до нужного вида (рис. 9.6.11). Сохраним ее под именем “Стройки по населенным пунктам и заказчикам” в папке с данным приложением.

  4. Разместим на форме объект Crystal Reportи создадим командную кнопку для формирования отчета с процедурой его формирования:

Private Sub Command1_Click()

CrystalReport1.ReportFileName = App.Path + _

“\Стройки по населенным пунктам и заказчикам.rpt“ 'имя файла с отчетом

CrystalReport1.RetrieveDataFiles‘обновление данных, используемых в отчете

CrystalReport1.PrintReport 'формирование отчета

End Sub

Внедрение Crystal Reports в приложение Viisual Basic

Опишем способ внедрения Crystal Reports в приложение Visuаl Basic, позволя­ющий выводить отчет без участия Crystal Reports:

  1. Командой Project/MoreActiveX/Designers/Crystal Reports создайте в проекте конструктор, например, CrystalReport1 (если этой команды нет в меню Project, то вызовите окно компонентов клавишами Ctrl+T и на странице Designers выберите строку Crystal Reports). В окне Crystal Report Gallery (рис. 9.6.12) выберите один из вариантов создания отчета: с использованием: мастера (Using the Report Expert), конструктора (As a Blank Report) или существующего отчета (From an Existing Report).

Рис. 9.6.12. Окно выбора варианта создания отчета

  1. В окне Crystal Report Expertвыберите вариант внедрения: добавление стартовой формы с компонентомCRViewerи выбор формы в качестве стартовой.

  2. Создается или корректируется форма отчета. Форма отчета сох­ра­ня­ется в проекте (при нажатии кнопки Save Project) в файле с расши­ре­нием Dsr и в отдельном файлеCrystalReportsс расши­ре­ни­емRpt(при вы­полнении команды контекстного менюReport/Save to Crystal Reports File).

  3. Для вызова и просмотра отчета используются команды:

CrystalReport1.ReadRecords ‘формирование отчета для CrystalReports 9 и выше

CrystalReport1.RetrieveDataFiles ‘форм. отчета для CrystalReports 8.5 и ниже

Form2.Show ‘формы Form2 с компонентом CRViewer и со свойством формы

‘WindowState=2 (Maximized).

Рекомендуетсяиспользовать более удобный вариант автономной разработки отчета средствамиCrystalReports. После автономной корректировки отчета, нужно удалить из проекта форму с компо­нентом просмотра этого отчетаCRViewer и кон­струк­торCrystalReportи повторно встроить откорректированный отчет. Для компонентаCRViewer рекомендуется указывать для всех свойств типаEnableзначениеTrue.