1

我在JR报告中有一个子报告,它向主报告返回一个值。如果子报表中的结果为空,则变量 return 为 null,因此对该返回值执行的所有计算都为 null。我尝试了很多事情,比如

$V{ReturnValue} == null ? 0 : $V{ReturnValue}
$V{ReturnValue}.toString().equals(null) ?.....
and many other stupid things but all in vein.

我在许多网站上专门阅读了许多关于SO的帖子,但没有人回答过这个问题,除了一个不太好的问题。

4

1 回答 1

1

雅虎!靠着上帝的恩典,我对自己的问题做出了很好的回答。发布它,因为它可能会在将来帮助某人。

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

我的存储过程为

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

在 IReport 中,我将变量声明为

$F{IDU}==1?$F{Amount}:0

这样,它现在显示 0.00 而不是 null。它实际上所做的是

解释

1) 它设置了一个默认值为 '0' 的 @m 变量

2) 然后,如果它找到 x 表的任何行,它将 @m 替换为新的帐户名称

3)当涉及到y表时,它检查@m是否已更改,如果更改则放入1

4) 在 IReport 中,我们的变量表达式表示,如果 IDU 为 1,则表示结果集中有一行,如果为 0,则表示没有行并输入 0。

于 2013-11-01T19:13:57.263 回答