Подготовка отчетов в Crystal Reports

       

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 можно увидеть условные текущие итоги в правом столбце отчета.

     


    Содержание раздела