(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Подготовка отчетов в Crystal Reports. Урок 4

Игорь Кузнецов

Урок 1 / Урок 2 / Урок 3 / Урок 5 / Урок 6

При генерации отчета в зависимости от его сложности Seagate Crystal Reports выполняет формирование отчета в три этапа, которым могут предшествовать некоторые подготовительные действия. Первым предварительным действием является вычисление всех формул, значения которых постоянны и не будут изменяться, то есть не зависят от содержимого записей. Это действие носит название «BeforeReading Records». После этого начинается первый этап чтения записей базы данных. На данном этапе выполняются следующие действия:

  • восстановление записей с применением сортировки и фильтрации записей базы данных, где это возможно на данном шаге,
  • вычисление формул со ссылками на поля базы данных, не использующих итоговые значения (это действие носит название «WhileReadingRecords»),
  • выполнение заданной фильтрации записей,
  • сортировка, группировка и подсчет итогов для каждой группы,
  • генерация кросс-таблиц,
  • сохранение всех прочитанных и вычисленных данных в промежуточном файле, данные которого будут использоваться на следующих этапах без нового обращения к записям базы данных.

На предварительном шаге перед вторым этапом Seagate Crystal Reports упорядочивает группы в соответствии с заданной иерархией (например, Top/Bottom N). На этом шаге чтения записей не происходит, а осуществляется только просмотр групп, сформированных на первом этапе.

На втором этапе Seagate Crystal Reports выполняет требуемое форматирование данных на страницах, осуществляя следующие действия:

  • выбор групп по заданному фильтру,
  • вычисление полей Running totals,
  • вычисление значений формул, использующих итоги (это действие носит название «WhilePrintingRecords»),
  • создание диаграмм и карт,
  • создание подчиненных отчетов,
  • выполнение генерации страниц отчета по требованию.

На третьем и последнем этапе создания отчета выполняется подсчет общего числа страниц отчета (рис. 17).


Рис. 17. Граф процесса генерации отчета в Crystal Reports

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

Поля Running totals. Специальные поля, позволяющие контролировать подсчет итогов, могут использоваться для решения следующих задач:

  • подсчет значений итогов по каждой записи,
  • создание итогов, независимых от группирования записей,
  • вычисление итогов с использованием условий,
  • вычисление итогов для таблиц со связью «один-ко-многим».

В зависимости от той области отчета, в которой будет помещено поле Running totals, результат, возвращаемый формулой, будет различным.

Report Header возвращает только первую запись отчета.
Page Header cоздает итог и включает в него первую запись текущей страницы.
Group Header cоздает итог и включает в него первую запись текущей группы.
Details area cоздает текущий итог для каждой записи (с накоплением).
Group Footer cоздает общий итог для каждой группы.
Report Footer cоздает итог и включает в него первую запись со следующей страницы.
Page Footer cоздает общий итог для всех записей.

Создадим текущие итоги (Running totals) для каждой записи. Для этого создадим простой отчет на базе таблиц Customers и Orders из базы данных Xtreme.mdb. В отчет включаем поля customer.

CUSTOMER NAME, orders.ORDER ID, orders.ORDER AMOUNT. Дополним отчет полем с текущим итогом, для чего осуществим следующие действия:

1. Выполним команду Insert - Running Total Fields. В появившемся окне «Field Explorer» щелкнем по кнопке New.

2. В окне «Create Running Total Field» в строку Running Total Name введем текст «TotalOrders». В области «Available Tables and Fields» выделим orders.ORDER AMOUNT и щелчком по первой из кнопок со стрелкой вправо перенесем его в строку «Field to summarize». В раскрывающемся списке «Type of summary» выбираем функцию SUM. В области «Evaluate» выберем значение переключателя «On change of field» и в одноименную строку с помощью второй кнопки со стрелкой вправо занесем имя поля - orders.ORDER ID. Это приведет к подсчету итоговых значений при каждом изменении содержимого этого поля. В области «Reset» сохраним значение переключателя «Never», что приведет к накоплению итоговых значений по всем данным отчета (рис. 18). Щелчок по кнопке ОК сохранит выбранные установки и возвратит нас к окну «Field Explorer».


Рис. 18. Окно определения параметров поля Running Total

3. С помощью кнопки Insert to Report вставим поле TotalOrders правее всех полей отчета в области Detail. Перейдя на вкладку Preview, можно увидеть текущие итоги в правом столбце отчета.

Аналогичным образом можно создать текущие итоги для групп записей, но предварительно следует осуществить требуемое группирование. Снова создадим простой отчет на базе таблиц Customers и Orders из базы данных Xtreme.mdb, в который включим поля customer.CUSTOMER NAME, orders.ORDER ID, orders.ORDER AMOUNT, и проделаем следующее:

1. Выполним команду Insert - Group и создадим группировку по полю cus tomer.USTOMER NAME.

2. Выполним команду Insert - Running Total Fields. В появившемся окне «Field Explorer» щелкнем по кнопке New.

3. В окне «Create Running Total Field» в строку Running Total Name введем Group RunningTotal. В области «Available Tables and Fields» выделим orders.ORDER AMOUNT и щелчком по первой из кнопок со стрелкой вправо перенесем его в строку «Field to summarize». В раскрывающемся списке «Type of summary» выбираем функцию SUM. В области «Evaluate» выберем значение переключателя «For each record». В области «Reset» выберем значение переключателя «On change of group» и оставим предложенное по умолчанию имя группы (рис. 19). Щелчок по кнопке ОК сохранит выбранные установки и возвратит в окно «Field Explorer».


Рис. 19. Определение параметров поля Running Total для групп запсей.

.

4. С помощью кнопки Insert to Report вставим поле GroupRunningTotal правее всех полей отчета в области Detail. Перейдя на вкладку Preview, можно увидеть текущие итоги в правом столбце отчета. Если необходимо создать общий итог для каждой группы, то поле Group RunningTotal следует поместить в область Group Footer.

Если в отчете не следует группировать записи или требуется оставить их рассортированными по другому признаку, но необходимо подсчитать итоги с учетом определенных условий, можно воспользоваться текущими итогами по условию. Для примера таких итогов предварительно создадим простой отчет на базе таблиц Customers и Orders из базы данных Xtreme.mdb. В отчет включим поля customer.

CUSTOMER NAME, customer.COUNTRY, customer.LAST YEAR’S SALES.

Дополним отчет полем с текущим итогом по условию, для чего осуществим следующие действия:

1. Выполним команду Report - Sort Records и выберем сортировку по полю customer.CUSTOMER NAME.

2. Выполним команду Insert - Running Total Fields. В появившемся окне «Field Explorer» щелкнем по кнопке New.

3. В окне «Create Running Total Field» в строку Running Total Name введем USTotal.

В области «Available Tables and Fields» выделим customer.LAST YEAR’S SALES и щелчком по первой из кнопок со стрелкой вправо перенесем его в строку «Field to summarize». В раскрывающемся списке «Type of summary» выберем функцию SUM.

В области «Evaluate» выберем значение переключателя «Use a formula» и щелкнем по кнопке Formula. В открывшемся окне «Running Total Condition Formula Editor» в строку Formula вводим [Customer.Country] = «USA». Это значит, что при вычислении текущих итогов будут использованы только записи, значение поля customer.COUNTRY, которых равно USA. Проверяем синтаксис и закрываем окно щелчком по кнопке Save and Close.

В области «Reset» выберем значение переключателя «Never».

Щелчок по кнопке ОК сохранит выбранные установки и возвратит в окно «Field Explorer».

3. С помощью кнопки Insert to Report вставим поле USTotal правее всех полей отчета в области Detail. Перейдя на вкладку Preview можно увидеть условные текущие итоги в правом столбце отчета.

Урок 1 / Урок 2 / Урок 3 / Урок 5 / Урок 6



 Распечатать »
 Правила публикации »
  Обсудить материал в конференции SAP Business Objects »
Написать редактору 
 Рекомендовать » Дата публикации: 30.11.2001 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
SAP Crystal Reports XI R2 Dev 2006 INTL WIN NUL License (Version 11)
SAP® Crystal Reports 2016 WIN INTL NUL
SAP® Crystal Presentation Design 2016 WIN INTL NUL
SAP Crystal Reports 2008 INTL WIN NUL License
SAP Crystal Server 2011 WIN INTL 5 CAL License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Новые материалы
Мир OLAP и Business Intelligence: новости, статьи, обзоры
Один день системного администратора
Каждый день новые драйверы для вашего компьютера!
Delphi - проблемы и решения
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Разработка программ базы данных (25)
Написание прикладных компьютерных программ (базы данных) на заказ. Разработка корпоративных...
 
Пишу программы на заказ профессионально (3122)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Пишу программы на заказ для студентов (215)
Пишу для студентов на с, с++, паскаль в средах ms visual studio, qt, builder, borland c, delphi....
 
Написание программ для микроконтроллеров AVR, PIC, ARM, STM32 (8)
Напишу любую программу на любом искусственном языке. Профессиональный программист. Основная...
 
Разработка устройств на микроконтроллерах (28)
Профессиональный программист. Основная специализация: МИКРОКОНТРОЛЛЕРЫ, АССЕМБЛЕР для любых...
 
 
 



    
rambler's top100 Rambler's Top100