我在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报告工具中的特定行的第一行显示空白(如果它为空)?
请帮助我解决这个问题......谢谢!
答案 0 :(得分:1)
虽然我没有尝试准确理解您的问题是什么,但一般来说,当数据中的空值导致BIRT报告出现问题时。使用这两种解决方案中的一种。
使用数据库功能将NULL转换为其他内容。在SQL中,我使用命令ISNULL
在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"}