Общая переменная отчетов Crystal Reports в подотчете не отображается в заголовке страницы основного отчета. - PullRequest
1 голос
/ 21 октября 2011

У меня есть раздел подотчета, который отображает детали (позиции), связанные с заказом.В этом подотчете я создал общую переменную для возврата суммы поля веса:

WhilePrintingRecords;
Shared numbervar WeightTotal := Sum ({Report.TotalWeight})

В своем основном отчете я создал еще одну переменную для отображения общего веса подотчетов:

WhilePrintingRecords;
shared numbervar WeightTotal;
WeightTotal;

Это прекрасно работает для отображения итогов в нижнем колонтитуле отчета или нижнем колонтитуле страницы.Однако мне нужно отобразить эту сумму в заголовке страницы.

Я попытался создать другую переменную отчета с функцией EvaluateAfter(), чтобы попытаться перенести эти данные в раздел заголовка.Это не сработало.

Я также пытался следовать рекомендациям по созданию глобальной переменной в главном отчете согласно этой теме: Crystal Reports: общая глобальная переменная не отображается в заголовке

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

1 Ответ

3 голосов
/ 21 октября 2011

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

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

select sum(weight)
from table
where table.orderID="table"."orderID"

Альтернативой может быть использование дополнительного уровня внутренней группировки для каждого заказа, полное избавление от вложенных отчетов и использованиеФункция кристалла sum () или глобальная переменная для получения веса для внутренней группы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...