jaspersoft报告图像

时间:2015-04-23 08:33:13

标签: sql jasper-reports

IF($F{Status} == "Lopend" ,$P{IMG_DIR} + "scorm_incomplete.png", ""
,OR($F{Status} == "Voltooid", $P{IMG_DIR} + "scorm_completed.png","", 
OR($F{Status} == "Niet geprobeerd", $P{IMG_DIR} + "scorm_not_attempted.png", "" )))

我正在与jaspersoft合作,为电子学习网站上的测试建立关系,

但是对于测试的状态,他应该给出一个图标......

但是这个声明并不适用于Jaspersoft ...

我得到的错误是:

  

LogicalFunctions类型中的方法OR(Boolean ...)不是   适用于参数(布尔值,字符串,字符串)

有人知道解决方案吗?

(抱歉我的英文不好......)

2 个答案:

答案 0 :(得分:0)

首先,OR()函数应该与布尔值一起使用。你的错误是在谈论这一行:

OR($F{Status} == "Niet geprobeerd", $P{IMG_DIR} + "scorm_not_attempted.png", "" )

将字符串变为布尔值。例如$P{IMG_DIR} + "scorm_not_attempted.png" != "BadFooBarscorm_not_attempted.png"来检查图像是否不是某个图像。

为什么会出错?因为如果其中一个输入为TRUE,则OR()用于返回TRUE或FALSE。无法将String计算为TRUE或FALSE,因此OR()会引发错误。你的OR()这里有3个输入,实际上只有一个输入。

$F{Status} == "Niet geprobeerd", 

返回一个布尔值(TRUE或FALSE)

$P{IMG_DIR} + "scorm_not_attempted.png", 

返回一个String(FOOBARscorm_not_attempted.png)

""

返回String()

其次,抛出错误的OR()语句嵌套在另一个错误的OR()语句中:

OR($F{Status} == "Voltooid", $P{IMG_DIR} + "scorm_completed.png","", 
OR($F{Status} == "Niet geprobeerd", $P{IMG_DIR} + "scorm_not_attempted.png", "" ))

你需要对这个做同样的事情。你现在拥有的是OR(布尔值,字符串,字符串,布尔值),它需要是OR(布尔值,布尔值,布尔值,布尔值)

修复OR()后,看起来你的IF()语句也会遇到问题。你能提供一些关于你希望这个表达式做什么的更多细节吗?检查的OR()语句是什么?当状态为“Voltooid”时应该显示什么?等

(对不起,我希望我说荷兰语)

答案 1 :(得分:0)

请更准确地说明你的需要。

对于我所看到的,您在使用IF语法时遇到问题,并且此处不需要OR。 正确的语法是

IF(condition, returned value if condition true, returned value if condition false)

您可以使用false子句检查不同的情况。 根据您提供的信息,您的问题的正确答案是

IF($F{Status} == "Lopend", $P{IMG_DIR} + "scorm_incomplete.png", IF($F{Status} == "Voltooid", $P{IMG_DIR} + "scorm_completed.png", IF($F{Status} == "Niet geprobeerd", $P{IMG_DIR} + "scorm_not_attempted.png", "")))

此外,更喜欢.equals()方法而不是==来比较字符串。 ==只有在相同的实例时才返回true,.equals()比较两个字符串中的每个字符是否相同。有关详细信息,请查看此topic。结果是:

IF($F{Status}.equals("Lopend"), $P{IMG_DIR} + "scorm_incomplete.png", IF($F{Status}.equals("Voltooid"), $P{IMG_DIR} + "scorm_completed.png", IF($F{Status}.equals("Niet geprobeerd"), $P{IMG_DIR} + "scorm_not_attempted.png", "")))

最后,OR()语句可用于条件。 例如:

IF(OR($P{DUMMY}.equals("test1"),$P{DUMMY}.equals("test2")), <true clause>, <false clause>)