2013-11-01 35 views
1

我有一个子报表JR报告,它返回一个值到主报告。如果子报表中的结果为空,那么变量返回值为空,因此对此返回值执行的所有计算都为空。我试过很多东西像JasperReports:子报表中的空结果集返回空变量主报告

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

我读了许多网站的许多职位专门对SO但从来没有人回答,除了一个这个问题,这是不那么好。

回答

1

Yahoo!靠着上帝的恩典,我对自己的问题做出了很好的回答。发布它,因为它可能有助于未来的人。

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,而不是空。其实际作用是,它

说明

1)设置与“0”

2)然后默认值的变量@m如果它发现了X表任何行它新帐户名称

3)当谈到Y工作台,它会检查@m是否已经改变,如果改变,那么把1

4)更换@m在iReport的,我们的变量表达式表示,如果IDU有1个它的意思是结果集有一行,如果为0,则表示没有行并且将其置为0.

相关问题