Общая переменная Crystal Reports в подотчете не отображается в заголовке страницы основного отчета

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

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

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

WhilePrintingRecords;
shared numbervar WeightTotal;
WeightTotal;

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

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

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

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


person Jesse    schedule 20.10.2011    source источник
comment
В итоге я выполнил эту работу, добавив вторую копию подотчета к заголовку страницы основного отчета и вытащив общие итоги. Грубо, но пока работает, пока я не найду лучший способ передать эту информацию.   -  person Jesse    schedule 21.10.2011
comment
У меня проблема с отображением общей переменной в нижнем колонтитуле страницы в том же сценарии, но при наличии многостраничного отчета   -  person Juan    schedule 08.04.2014


Ответы (1)


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

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

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

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

person Ryan    schedule 21.10.2011