1

BIRTにレポートがあり、最後に要約を追加したいと思います。

レポートは、独自のデータセットを持つ3つのテーブルです。要約情報と総計を含む4番目の表を表示したいと思います。総計の計算に問題があります。

元:

DataSet #1
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx


DataSet #2
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx

DataSet #3
col1 | col 2 | Total
   x |     x |     x
   x |     x |     x
                  xx


Summary
Total DataSet #1 |  xx
Total DataSet #2 |  xx
Total DataSet #3 |  xx
Grand Total      | xxx
4

1 に答える 1

3

最初の3つのテーブルのそれぞれに必要な小計をすでに作成しています(私が推測するグループを介して)。総計を使用したテーブルセルのスクリプト作成イベントで、各小計を追跡するように永続グローバル変数を設定します。次に、4番目の最後のテーブル内の各値にアクセスできます。

変数を設定するには:

var totalValue = this.getDataRowData().getColumnValue("totalColumnName");
reportContext.setPersistentGlbalVariable("DataSet1Total", totalValue.toString());

注:シリアル化を確実にするには、総計を「文字列」タイプに送信する必要があります。最終的なサマリーテーブルをレンダリングするときに、数値に戻すことができます。

変数を使用するには、レポートにテキストコントロールを追加します(サマリーテーブルのセル内)。テキストコントロールのonCreateスクリプトイベントで、次のように入力します。

this.text = reportContext.getPersistentGlobalVariable("DataSet1Total");

これは、以前に保持した要約フィールドごとに行います。次に、総計について、これを行うことができます:

this.text = parseInt(reportContext.getPersistentGlobalVariable("DataSet1Total")) + parseInt(reportContext.getPersistentGlobalVariable("DataSet2Total")) + parseInt(reportContext.getPersistentGlobalVariable("DataSet3Total"));

永続グローバル変数は、レポート内のコンポーネントの境界を越えてアクセスできるシリアル化可能な値です。それはあなたと同じように要件に非常に便利です。

幸運を!

于 2009-08-04T21:24:02.177 に答える