1

注文に関連する詳細(ラインアイテム)を表示するサブレポートセクションがあります。このサブレポート内で、重みフィールドの合計を返すための共有変数を作成しました。

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

メインレポートでは、サブレポートの総重量を表示する別の変数を作成しました。

WhilePrintingRecords;
shared numbervar WeightTotal;
WeightTotal;

これは、レポートフッターまたはページフッター内に合計を表示する場合に適切に機能します。ただし、この金額をページヘッダーに表示する必要があります。

EvaluateAfter()このデータをヘッダーセクションに取り込む関数を使用して、別のレポート変数を作成しようとしました。それはうまくいきませんでした。

また、このスレッドに従って、メインレポートにグローバル変数を作成するという提案に従ってみました。CrystalReports:グローバル変数の現在の合計がヘッダーに表示されない

このようなタスクを実行することも可能ですか?基礎となるデータはspによって生成されます(両方ともいくつかの異なるレポートで共有されます)。新しいspを作成して、この合計を単純に合計することもできますが、これをクリスタルに委任したいと思います。

4

1 に答える 1

3

問題は、2番目の式でWhilePrintingRecordsを使用すると、Crystalが最終評価パス中に通常よりも遅く評価するように強制する一方で、これはサブレポートが評価されるときにも発生することです。これは、メインレポートの数式がサブレポートに関連して処理されることを意味します。あなたの場合、WhilePrintingRecordsキーワードを使用しても、ヘッダーの数式は詳細セクションのサブレポートの前に評価されます。この図は、さまざまなパスを理解するのに最適です:マルチパスレポートプロセス

SQL式を使用して、各詳細セクションの単純な集計合計を実行してみることができます。データソースやスキーマについて何も知らないので、例を示すのは難しいですが、ここに一般的な考え方があります。スカラーを返す限り、データソースに任意の有効なSQLを使用できます。

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

別の方法は、注文ごとに追加の内部グループ化レベルを使用し、サブレポートを完全に削除し、Crystalのsum()関数またはグローバル変数を使用して内部グループごとの重みを取得することです。

于 2011-10-21T03:06:12.067 に答える