首页 文章

iReport / JasperReports Server:子报表返回值为null

提问于
浏览
0

我有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,没有任何帮助 .

有人对我有暗示吗?先感谢您 .

2 回答

  • 0

    我遇到了同样的问题,除了我试图使用子报表的返回值作为另一个子报表的参数 . 我通过在第二个子报表中使用scriptlet成功获得了我想要的结果 .

    我继续这样做:-in subreport 2,我有参数p(Float),它的值是子报告1的返回值 - 在子报告2中,我有一个变量v(Float),用p -in我的scriptlet初始化(在方法beforeDetailEval()中,我测试我的变量v:如果它是null,我赋值new Float(“0.0”)

    我工作正常 .

    这种情况的限制是,如果要直接在主报表中使用子报表的返回值 . 我试过这样做,但从未成功过 .

    希望有一天能帮助别人 .

    Cecilka

  • 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 .

相关问题