输入参数不在下拉数据集范围设置默认值

需求背景:

客户想在参数模板中设置里下拉数据集 同时也可以对这个单元格进行填值查询,这样有一种情况是填的值可能不在数据库字段范围,客户想在这种情况时对查询的参数进行一个默认值的查询处理.

解决思路:

参数模板在后台报表引擎计算的时候对参数遍历比较设置

操作步骤:

在展现页面中进行遍历比较 设置默认值

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);

}

}

 

上面为部分代码,详细见附件中例子。

热门文章