【发布时间】:2014-07-07 20:55:28
【问题描述】:
在尝试获取要在 BIRT 引擎 API 中接受的多值列表框值时遇到一些问题。
我看到的错误是"The type of parameter "EmployeeType" is expected as "Object[]", not "java.lang.String".
我在 beforeOpen 子句中尝试了多种变体以使其正确解析这些内容,但在运行报告时它总是返回相同的错误。
查询的值需要去的部分看起来像where pebempl_stgr_code in (?)
它应该只是一个逗号分隔值的列表,但它不起作用。我所做的所有搜索都出现了 2011 年及之前的问题,我没有想法。
编辑:
第一个 beforeOpen 脚本尝试是这样的
this.queryText=this.queryText.replace("placeHolder","where pebempl_stgr_code in ('" + params["employeeType"].value.join("','") + "')");
在内置的网络查看器中工作,但不适用于引擎 API
然后尝试了这个的修改版本:
var parmcount = params["parmorders"].value.length
var whereclause = "";
if( parmcount > 0 ){
whereclause = " where customernumber in ( ";
}
for( i=0; i < parmcount; i++ ){
if( i == 0 ){
whereclause = whereclause + params["parmorders"].value[i];
}else{
whereclause = whereclause + " , " + params["parmorders"].value[i];
}
}
if( parmcount > 0 ){
this.queryText = this.queryText + whereclause + " ) ";
}
它的工作方式相同,在 Web 查看器中运行良好,但无法在 Engine API 中运行。
【问题讨论】: