Авторизация



Передача данных между главным и подчиненным отчетами

Оценить
(1 голос)

Помимо передачи в подчиненный отчет связующего поля для фильтрации записей, вы можете захотеть, чтобы в него из главного отчета передавались и какие-то другие данные для других целей. Например, вы можете захотеть, чтобы в подчиненный отчет передавались данные для итогового суммирования или для решения других аналогичных задач. Данные могут передаваться из главного отчета в подчиненный через поле параметра. Однако Crystal Reports также предоставляет возможность использования общей (shared) переменной, которая тоже позволяет передавать данные между подчиненными и главными отчетами.

Передать данные из главного отчета в подчиненный отчет так, чтобы они не использовались для фильтрации записей подчиненного отчета, довольно просто. Отобразите диалоговое окно Subreport Links (Связи подчиненного отчета), как было описано ранее в этой главе, и добавьте связываемое поле из главного отчета в список Field(s) То Link То. В выпадающий список Subreport Parameter Field То Use будет автоматически добавлено поле параметра с приставкой Pm-. Теперь снимите отметку с флажка Select Data in Subreport Based on Field (рис. 12.12).

Передача данных между главным и подчиненным отчетами

В результате в подчиненном отчете будет создано поле параметра с приставкой Pm-, в которое будут передаваться данные, но которое не будет использоваться для выборки записей. Далее либо используйте это поле в формулах подчиненного отчета, либо поместите его в подчиненный отчет для отображения. Возьмем предыдущий пример: если бы вы добавили параметр для поля с итогами продаж по регионам за последний год, ваш вложенный (подчиненный) отчет “знал бы” итоги продаж по региону, несмотря на то, что он не сгруппирован по региону. Вы затем могли бы добавить в нижний колонтитул подчиненного отчета формулу, которая бы сравнивала сумму кредитов с суммой продаж по региону и выводила соответствующий текст.

На заметку! Для получения более подробной информации о полях параметров и способах их использования в отчетах обратитесь в главу 13.

Универсальным средством для передачи данных между главным отчетом и подчиненными или даже между двумя подчиненными отчетами Являются общие переменные. В главном и подчиненном отчетах необходимо создать формулы, в которых объявляется одна и та же общая переменная. Присваивать значение переменной можно в подчиненном отчете, после чего читать ее в главном и наоборот.

Ниже приводится пример формулы из подчиненного отчета, в которой общей переменной присваивается сумма полей Amount:

WhilePrintingRecords;

Shared CurrencyVar CreditTotal = Sum ({Credit.Amount})

А вот соответствующая формула из главного отчета, которая извлекает значение общей переменной:

WhilePrintingRecords;

Shared CurrencyVar CreditTotal

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

Передача данных между главным и подчиненным отчетами

Во избежание возникновения таких ошибок нужно создать формулу для установки общей переменной в ноль для каждого нового региона:

WhilePrintingRecords;

Shared CurrencyVar CreditTotal = О

После добавления этой формулы в главный отчет (например, в заголовок группы по регионам) и проверки правильности результатов ее можно подавить с помощью редактора Format Editor так, чтобы нулевые значения не отображались.

Вопросы, касающиеся создания и использования формул, более подробно рассматриваются в главе 5.

На заметку! В связи с тем, что подчиненные отчеты обрабатываются после основного отчета для получения корректного значения общей переменной, которое устанавливается в подчиненном отчете, нужно выполнить несколько дополнительных шагов. Пусть, например, имеется подчиненный отчет и формула, отображающая содержимое общей переменной. Значение переменной устанавливается в подчиненном отчете. Подчиненный отчет и формула помещены в нижний колонтитул группы. В этом случае формула будет возвращать значение для предыдущей группы, а не для текущей. Причина этого состоит в том, что подчиненный отчет устанавливает значение общей переменной после обработки формулы, использующей эту переменную. Решить эту проблему можно так: добавить дополнительный раздел (например, Group Footer #1 b), как было описано в главе 8, и поместить формулу с общей переменной в этот раздел, а подчиненный отчет оставить в первом разделе (Group Footer #1 а). В результате формула будет использовать общую переменную после того, как подчиненный отчет установит ее значение.

 

Пустые подчиненные отчеты
Определенные виды отчетов
Несвязанные подчиненные отчеты
Подчиненные отчеты с возможностью детализации
Связанные подчиненные отчеты

Добавить комментарий


Защитный код
Обновить