Ireport参数计数计算困难

时间:2016-06-24 02:51:01

标签: jasper-reports

我的报告可以在报告设计器中使用4个参数

例如: ticket1,ticket2,ticket3,ticket4

有时我可以选择给报告2个参数或者3个

例如: ticket1,ticket2 ticket1,ticket2,ticket3

我有一个变量TICKET_COUNT,我不知道如何总结参数的计数,因为我可能并不总是给它4,我可以从0到4给出任何一个。

如何获取我为报告提供的参数数量?

ex:ticket1,ticket2,ticket3,ticket4。 TICKET_COUNT = 4

ex:ticket1,ticket4。 TICKET_COUNT = 2

1 个答案:

答案 0 :(得分:1)

解决。

编写一个scriptlet

package com.xxx;

import net.sf.jasperreports.engine.JRDefaultScriptlet;
import net.sf.jasperreports.engine.JRScriptletException;

public class MyScriptlet extends JRDefaultScriptlet {
 public int getTicketCount() throws JRScriptletException {
     String ticket1 = (String)this.getParameterValue("ticket1");
     String ticket2 = (String)this.getParameterValue("ticket2");
     String ticket3 = (String)this.getParameterValue("ticket3");
     String ticket4 = (String)this.getParameterValue("ticket4");
     int cnt = 0;
     if(ticket1!=null){
         cnt++;
     }
     if(ticket2!=null){
         cnt++;
     }
     if(ticket3!=null){
         cnt++;
     }
     if(ticket4!=null){
         cnt++;
     }
     return cnt;
   }
}

将scriptlet构建到jar文件,并在报告中转到classpath并添加jar

使用完全限定名称设置报告的Scritplet属性 你的scriptlet类(例如:com.xxx.MyScriptlet)

在报告中创建变量TICKET_COUNT和

将变量类设置为java.lang.Integer

将变量表达式设置为$P{REPORT_SCRIPTLET}.getTicketCount()

scriptlet配置详细信息here(第15章scriptlet)