JasperReports:子报表中的空结果集将null变量返回到主报表

时间:2013-11-01 18:22:41

标签: jasper-reports

我在 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 ,但没有人回答过这个问题,除了一个不太好的问题。

1 个答案:

答案 0 :(得分: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)它设置一个@m变量,默认值为'0'

2)然后,如果它找到x表的任何行,则用新的帐户名

替换@m

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

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