BIRT报告工具

时间:2014-08-08 09:09:01

标签: eclipse report birt

我在Eclipse Java EE IDE(Juno Release)中使用BIRT报告设计创建了一个报告。 在该报告中,对于单行,它对应的一列有多个值(我使用LISTAGG()oracle函数来映射)。

(即)Result列在以下数据库表输出中有多个值:

No    Name    Result     Mark 
-----------------------------------
1     John          X                  32
               XX
              XXX
2     Joe            X                   56

              XX
              XX

              XXX
3    Andrew                          34

             XXX
             XX

             XXXX

... 它中包含NULL和NOT NULL值。

"如果NULL值位于中间意味着它在报告中正确显示结果"

示例结果我正在获取Joe(.pdf表单)的报告输出

No    Name    Result     Mark 
-----------------------------------
2     Joe            X                   56

              XX
              XX

              XXX

这里的问题是, “如果第一个记录有NULL意味着它在报告中没有正确显示,那么NOT NULL值将在前面打印,依此类推......”

示例结果我正在获取Andrew(.pdf表单)的报告输出

No    Name    Result     Mark 
-----------------------------------
3    Andrew      XXX            34
                 XX

                XXXX

但是我们在Andrew的结果前面列中有两个NULL值(如上所示oracle表输出示例)...

是否有任何选项在birt报告工具中的特定行的第一行显示空白(如果它为空)?

请帮助我解决这个问题......谢谢!

1 个答案:

答案 0 :(得分:1)

虽然我没有尝试准确理解您的问题是什么,但一般来说,当数据中的空值导致BIRT报告出现问题时。使用这两种解决方案中的一种。

  1. 使用数据库功能将NULL转换为其他内容。在SQL中,我使用命令ISNULL

  2. 在BIRT'数据集'中使用计算列。创建一个新列,在JS中编写您需要的任何内容。在下面的示例中,我需要对日期字段做出决定,该日期字段有时为null,与输入参数相比较。

    if(row [" START_TIME"] == null){ " F" } else if(row [" END_TIME"] == null){ " T" } else if(row [" START_TIME"]。getTime()> = params [" WeekOf"]。getTime()){ " T" } else if(row [" END_TIME"]。getTime()< = params [" WeekOf"]。getTime()){ " F" } else if(row [" END_TIME"]。getTime()> = params [" WeekOf"]。getTime()){ " T" }其他{ " F"}