【问题标题】:JasperReports: Empty resultset in subreport returns null variable to main reportJasperReports:子报表中的空结果集将空变量返回到主报表
【发布时间】:2013-11-02 04:41:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: jasper-reports


    【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      相关资源
      最近更新 更多