Проблема заключается в том, что, хотя использование WhilePrintingRecords во второй формуле вынуждает Crystal вычислять его позже, чем обычно, во время последнего этапа оценки, это также происходит при оценке подотчетов.Это означает, что любые формулы в основном отчете обрабатываются относительно для вложенного отчета.В вашем случае формула в заголовке оценивается перед вложенным отчетом в разделе сведений, даже с ключевым словом WhilePrintingRecords.Эта диаграмма хороша для понимания различных проходов: Процесс многоходовой отчетности .
Вы можете попробовать использовать выражение SQL, чтобы выполнить простое агрегированное суммирование для каждого раздела сведений.Не зная ничего о вашем источнике данных или схеме, трудно привести пример, но вот общая идея.Вы можете использовать любой допустимый SQL для вашего источника данных, если он возвращает скаляр.
select sum(weight)
from table
where table.orderID="table"."orderID"
Альтернативой может быть использование дополнительного уровня внутренней группировки для каждого заказа, полное избавление от вложенных отчетов и использованиеФункция кристалла sum () или глобальная переменная для получения веса для внутренней группы.