0

注文番号に基づいて製品をグループ化する Crystal レポートを作成しました。

各製品の「差異」と呼ばれるフィールドが 0 に等しいかどうかに基づいて、「部分的に完了」または「完全に完了」というテキストを表示する数式を作成しました。'Difference' が 0 の場合は 'Fully Completed' が表示され、その逆も同様です。

私がする必要があるのは、全体の注文番号に対応するメッセージを表示することです (つまり、注文のいずれかの製品に違いがある場合 != 0 の場合、「一部完了しました」と表示されます。すべての製品に違いがある場合 == 0 の場合注文は「完全に完了しました」と表示されます。

これは私がこれまでに試みたコードです:

StringVar ouputText;

if {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0 then
    ouputText := 'Full'
else
    ouputText := 'Partial';

ouputText;

注文のすべての製品をループし、注文のいずれかに違いがあるかどうかを確認するために何らかの for ループが必要であると仮定します != 0 そして、すべての製品に違いがあるかどうかに基づいてメッセージを更新します = = 0 または積の 1 つが差 != 0 を持つことで条件を破ります。

4

1 に答える 1

1

ループは、「順序」に従ってレポートをグループ化し、製品を詳細部分に配置する代わりに、長いプロセスです。これにより、注文内の製品全体が自動的にループされます。

  1. 名前をリセットして数式を作成し、グループ ヘッダーに配置します。コードは以下です。

    共有 stringVar 配列 y;

    y:=" ";
    
    join(y);
    
  2. 数式を作成し、詳細セクションに配置します。これは結果を受け取り、将来の使用のために配列に保存します。以下のコードを使用します。

StringVar 出力テキスト;

共有 stringVar 配列 y;

if {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0 then y:= y+'Full' else y:= y+'Partial';

if {AD_999_SB_Fulfillment__Summary.FulfillmentPicking.Difference} = 0 then
    ouputText := 'Full'
else
    ouputText := 'Partial';

ouputText;
  1. グループ フッターで別の式を作成して、結果が完全か部分的かを表示します。

    共有 stringVar 配列 y;

    if "Partial" in y Then "partial" else "Full";

于 2013-08-07T06:17:13.127 に答える