输入参数不在下拉数据集范围设置默认值
需求背景:
客户想在参数模板中设置里下拉数据集 同时也可以对这个单元格进行填值查询,这样有一种情况是填的值可能不在数据库字段范围,客户想在这种情况时对查询的参数进行一个默认值的查询处理.
解决思路:
参数模板在后台报表引擎计算的时候对参数遍历比较设置
操作步骤:
在展现页面中进行遍历比较 设置默认值
if( f.exists() ) {
if(parma1!=null){
InputStream fis=application.getResourceAsStream(reportFileHome +paramFile);
ReportDefine rd = (ReportDefine)ReportUtils.read( fis );
Context context = new Context();
Engine enging = new Engine( rd, context);
IReport iReport = enging.calc();
DataSet dateSet = context.getDataSet(“ds1″);//取数据集
int rowNum = dateSet.getRowCount() ;
int colNum = dateSet.getColNo(“DEGREE”) ; //按列名取列号
System.out.println(“rowNum:”+rowNum);
System.out.println(“colNum:”+colNum);
String dateValue =”";
if(parma1!=null ||parma1!=”"){
boolean flag = false;
for(int i=1;i<=rowNum;i++){
dateValue=(String)dateSet.getData(i,colNum);
System.out.println(“dateValue:”+dateValue);
if(dateValue.equals(parma1)){
flag=true;
System.out.println(“flag:”+flag);
}
}
if(flag ==false){
parma1= (String)dateSet.getData(1,colNum); //设置数据集里的第一个值,也可设置为固定值
System.out.println(“parma1:”+parma1);
param.append(“arg1=”).append(parma1).append(“;”);
}
}else {
System.out.println(“parma1:”+parma1);
}
}
上面为部分代码,详细见附件中例子。