我对 iReport / JasperReports服务器有以下问题。
我正在使用主报表,其中两个子报表返回计算的价格,子报表变量的类型和局部变量是 BigDecimal 。
如果子报表的返回值为null(未找到任何行),则主报表中指定的局部变量始终为null。但我想要“0.00”,因为我想计算一笔金额。
构造(return_variable == null ? new BigDecimal(0) : return_variable)
无法帮助将局部变量设置为默认值new BigDecimal(0)
。我总是得到 null 而不是想要的值 “0.00” ; - (
我已经使用版本3.7.6进行了测试,直到4.4。 iReport ,没有任何帮助。
有人对我有暗示吗?提前谢谢。
答案 0 :(得分:0)
我遇到了同样的问题,除了我试图使用子报表的返回值作为另一个子报表的参数。我通过在第二个子报告中使用scriptlet成功获得了我想要的结果。
我继续这样做: -in子报告2,我有参数p(Float),它的值是子报告1的返回值 -in子报告2,我有一个变量v(Float),用p初始化 - 在我的scriptlet中(在beforeDetailEval()方法中,我测试我的变量v:如果它为null,我赋值new Float(“0.0”)
我工作正常。
此限制是您希望直接在主报表中使用子报表的返回值。我试过这样做,但从未成功过。
希望有一天能帮助别人。
Cecilka
答案 1 :(得分: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
这样,它现在显示0.00而不是null。