0

iReport/JasperReportsサーバーで次の問題が発生します。

計算された価格を返す2つのサブレポートを持つメインレポートを使用しています。サブレポート変数のタイプとローカル変数はBigDecimalです。

サブレポートからの戻り値がnull(行が見つからない)の場合、メインレポートに割り当てられたローカル変数は常にnullです。しかし、合計を計算したいので、「0.00」にしたいです。

この構成(return_variable == null ? new BigDecimal(0) : return_variable)は、ローカル変数をデフォルト値に設定するのにも役立ちませんnew BigDecimal(0)。必要な値「0.00」の代わりに常にnullを取得します;-(

バージョン3.7.6から4.4までテストしました。iReportの場合、何も役に立ちません。

誰かが私にヒントを持っていますか?前もって感謝します。

4

2 に答える 2

0

サブレポートの戻り値を別のサブレポートのパラメーターとして使用しようとしたことを除いて、同じ問題がありました。2 番目のサブレポートでスクリプトレットを使用することで、目的の結果を得ることができました。

私はこのように進めました: - サブレポート 2 には、パラメータ p (Float) があり、その値はサブレポート 1 の戻り値です - サブレポート 2 には、p で初期化された変数 v (Float) があります - スクリプトレットに (メソッド beforeDetailEval() で、変数 v をテストします。値が null の場合は、値 new Float("0.0") を割り当てます。

私は正常に動作します。

これに関する制限は、サブレポートの戻り値をメイン レポートで直接使用する場合です。私はそれを試みましたが、成功しませんでした。

これがいつか誰かを助けることを願っています。

セシルカ

于 2013-01-04T16:09:47.463 に答える
0

ヤフー!神の恩寵により、私は自分自身の疑問に対するすばらしい答えを見つけました。将来誰かを助けるかもしれないので投稿してください。

1) I changed my Simple SQL Query with a MySQL stored procedure as.

私のストアドプロシージャとして

BEGIN
SET @p = 0;
SET @n = 0;
SET @m = '00';
SELECT x.*, y.* FROM 
     (select @n:=@n+1 as "ID", @m:=acc as "Account" from tbl_reports) x
        right JOIN 
     (SELECT if(@m='00',0,@p:=@p+1) as "IDU") y
ON y.IDU = x.ID;
END

IReport で、変数を次のように宣言しました。

$F{IDU}>0?$F{Amount}:0

これにより、null ではなく 0.00 が表示されるようになりました。

于 2013-11-01T19:18:55.197 に答える