2016-04-13 18 views
1

私はBIRTレポートを作成しています。各行は購入注文と一致する領収書です。通常、購入注文ごとに複数の領収書があります。私のクライアントは、注文書のqty_remainingが、各注文書の最後の領収書にのみ表示されることを望みます。私はBIRTが取得する前にデータを変更することができません。私は2つの可能な解決策を見ていますが、私はどちらかを実装する方法を見つけることができません。この質問は、最初の可能な解決策を扱うでしょう。BIRTの次の行に基づいて計算値

購入注文番号(po_number)を次の行と比較できる場合は、po_numbersが一致する場合は現在の行のqty_remainingを0に設定して、実際のqty_remainingを表示できます。次の行にアクセスできますか?

編集

目的の外観は次のようになります。

| date | receipt_number | po_number | qty_remaining | qty_received | |------|----------------|-----------|---------------|--------------| | 4/9 | 723 | 6026 | 0 | 985 | | 4/9 | 758 | 6026 | 2 | 1 | | 4/20 | 790 | 7070 | 58 | 0 | | 4/21 | 801 | 833 | 600 | 0 |

しかし、私は現在、これを取得しています:

| date | receipt_number | po_number | qty_remaining | qty_received | |------|----------------|-----------|---------------|--------------| | 4/9 | 723 | 6026 | 2 | 985 | | 4/9 | 758 | 6026 | 2 | 1 | | 4/20 | 790 | 7070 | 58 | 0 | | 4/21 | 801 | 833 | 600 | 0 |

+0

あなたの他のものは何ですか?期待した結果を簡単なテーブルで表示できますか? – Jeroen

+0

もう1つのアプローチはhttp://developer.actuate.com/community/forum/index.php?/topic/21623-calculate-from-previous-row/に似ています。しかし、現在の行の列値をグローバル変数から設定する代わりに、前の行の列値を設定して、前の行にアクセスできるようにする必要があります。 –

答えて

0

私はあなたが見て考えますこれは間違った方法です。ループに似た動作が必要な場合は、グループ化と集約関数を使用する必要があります。グループヘッダーとフッターを使用する(または使用しない)ことで、かなり複雑なものを構築できます。

あなたのケースでは、領収書をpo_numberにグループ化しようとします。 receipt_numberでそれらを注文し、次にreceipts_numberにMAXやLASTのような集計関数を持ち、それを 'last_receipt'と名づけます。テーブル全体ではなく、グループに集約する必要があります。この「合計」は、グループ内のすべての行で使用できます。 次に、visibitly設定を使用して、['receipt_number'] ==行['last_receipt']の行が表示されるときにqty_remainingを表示することができます。

関連する問題