我需要根据复杂分支语句的最终结果填写报表中的字段。我如何在iReport中执行此操作?报告需要显示不同的字符串,具体取决于数据库中不同字段的内容。我是否制作了非常复杂的SQL语句?我是否使用变量?
所以,例如,
如果字段x = 1 如果y = 1 IF z = 1 字段应为A
如果x = 1 如果y = 1 IF z = 2 字段应为B
答案 0 :(得分:1)
你可以做类似以下的事情:
( $F{staff_type} == null ? new String("") :
( $F{staff_type}.equalsIgnoreCase("Permanent") ? new String("1") :
( $F{staff_type}.equalsIgnoreCase("Non-permanent") ? new String("2") : new String("")
)))
基本上,您需要使用嵌套条件表达式。
答案 1 :(得分:1)
写一个像这样的表达式
(($F{PAYMENTMODE}.equals("CS")) ? "Cash":($F{PAYMENTMODE}.equals("CQ"))? "Cheque":"Bank")e
答案 2 :(得分:0)
我认为最简单的方法是让从支持bean传递的参数填充字段。 jdbc连接在bean中创建并传递给报表,访问所需的字段或字段应该相对容易,并通过确定分支结果的方法运行数据。将结果分配给参数并将其传递给JasperFillManager.fillReport(文件,参数,jdbcConnection)的jasperParameter变量中的报告。
答案 3 :(得分:0)
通常,我在将数据传递给Jasper Report Engine之前处理所有编程逻辑,但在某些情况下,需要进行后处理或后检查。如果是那种情况并且如果我有许多情况(字符串)要检查,我会编写一个'Jasper Report Scriptlet'并在那里处理那个逻辑(这样代码/报告是可读和可维护的,也是代码重用)。如果只检查2或3个字符串,我会使用'三元'运算符。
如果要使用报告scriptlet,创建一个scriptlet类(或使用现有的),编写一个方法来处理这个逻辑(例如:'checkString'方法)并放入$ P {REPORT_SCRIPTLET} .checkString(someString)在TextField的表达式中。