0

クリスタルレポートに関する問題があります。PAT_DEPという数式フィールドを 1 つ作成しました。数式は次のとおりです。

Local NUMBERVAR PAT_DEP_AMT := 0;

IF NextIsNull({MYOBJ.PAT_DEPOSIT}) = TRUE THEN
    (        
        IF {MYOBJ.PAT_DEPOSIT} = PREVIOUS({MYOBJ.PAT_DEPOSIT}) THEN
            (                
                PAT_DEP_AMT := 0;
            )

        ELSE
           (
                PAT_DEP_AMT  := {MYOBJ.PAT_DEPOSIT};
            );
    )
ELSE
    (
        IF PREVIOUS({MYOBJ.PAT_DEPOSIT}) = NEXT({MYOBJ.PAT_DEPOSIT}) THEN
            (
                PAT_DEP_AMT := ToNumber(0);
            )
        ELSE
            (
                PAT_DEP_AMT  := {MYOBJ.PAT_DEPOSIT};
            );
    )

次に、 TOT_PAT_DEPという別の数式フィールドを作成しました。数式は、上記の数式フィールドのように次のようになります。

TOTAL_PAT_DEP := SUM(@PAT_DEP)

しかし、結晶レポート エラーが発生しました。このフィールドは、結晶レポート エラーを要約できません。このエラーが発生した理由を教えてください。

4

1 に答える 1

0

あなたの説明と公式に基づいて、あなたはあなたにいくつかの困難を引き起こしている1対多の関係を持っているように見えます。例を見てみましょう:

注文表注文番号、合計、支払い済み

注文アイテムテーブル注文番号、行番号、説明

2つのテーブルを結合すると、注文行の数が乗算されるため、合計/支払い済みの列を合計することはできなくなります。

これを克服する方法は、キーを使用してグループを作成することです。私の例では、注文番号でグループ化します。次に、現在の合計を作成して合計/支払い済みの列を合計できますが、注文番号グループの変更についてのみ評価されます。

それは理にかなっていますか?

于 2012-06-11T12:12:37.833 に答える