知识库

推荐内容

快逸做的更好

产品优势

您的位置: 首页 > 知识库 > 设计基础 > API向报表组传递“组”类型参数问题

API向报表组传递“组”类型参数问题

首先我们来看一下需求,现在想通过api向报表中传递字符串数组类型的参数,当然,报表组中有对应的字符串组类型参数接收。

我们来看一下具体实现过程,定义showGroup.jsp,主要内容如下:

Context cxt = new Context();
String[] strArr1 = {”100723104537803200929443″,”100723103035803200929378″,”1007201109420704111439112″};
String str = “100723104537803200929443,100723103035803200929378,1007201109420704111439112″;
List ll = new ArrayList ();
ll.add(strArr1[0]);
ll.add(strArr1[1]);
ll.add(strArr1[2]);
StringBuffer sb = new StringBuffer();
for(int i=0;i sb.append(strArr1[i]);
sb.append(”,”);
}
sb.append(strArr1[strArr1.length-1]);
String fileName = “C:\\Program Files\\Apache Software Foundation\\Tomcat 5.0\\webapps\\reportmis2\\mis2\\reportcenter\\res\\test.rpg”;
ReportGroup reportGroup = ReportGroup.read(fileName);
ParamMetaData pmd = reportGroup.getParamMetaData();
String param1 = “”;
if(pmd != null){
param1 = pmd.getParam(0).getParamName();
out.println(”参数0名称:”+param1);
out.print(”
”);
//cxt.setParamValue(param1,strArr1); //将字符串数组传给报表字符串组参数
//cxt.setParamValue(param1,str); //将逗号分隔的字符串传给报表字符串组参数
cxt.setParamValue(param1,ll); //将ArrayList传给报表字符串组参数(正确的传递方式)
}
GroupEngine groupEngine=new GroupEngine(reportGroup, cxt); // IReport ireport=groupEngine.get(0);
out.print(”正在运算报表……”);
out.print(”
”);
try{
ReportUtils.exportToExcel(”D:\\tt.xls”,ireport,false);
out.println(” excel输出成功!”);
}catch(Throwable e){
e.printStackTrace();
}
ReportGroup.write(”C:\\Program Files\\Apache Software Foundation\\Tomcat 5.0\\webapps\\reportmis2\\mis2\\reportcenter\\res\\testOther.rpg”,reportGroup);
out.println(”报表组保存成功!”);

请注意代码中的注释部分,我们做了三次传递,如下:

将字符串数组传给报表组字符串组参数

cxt.setParamValue(param1,strArr1);
访问showGroup.jsp报错

请注意红色方框中内容,我们发现报表对于该参数按照对象解析的,并未解析为字符串组,所以这种传递方式不可行。

将逗号分隔的字符串传给报表组字符串组参数

cxt.setParamValue(param1,str)
访问showGroup.jsp,后台打印信息

查看导出的excel,发现其内容是空的,也就是说报表并没有根据参数查到相关数据。

将ArrayList传给报表组字符串组参数

cxt.setParamValue(param1,ll);
访问showGroup.jsp,我们来看一下后台信息

发现打印出来的参数为args,看起来是我们需要的字符串数组。现在来看导出的excel是否正常:

数据导出正常了,说明将list参数传递给字符串组参数是正确的。

总结:

报表中所有关于组类型的参数都是list类型的,我们传递的时候传递list进去便可以了。另外,我们也可以看出,组类型的参数在后台打印时会显示类似args这样的输出。

本文标签:
发布日期:2010/08/06
本文分类: 设计基础