SpagoBI多值参数

时间:2016-07-26 11:02:17

标签: java parameters birt spagobi

我正在尝试在SpagoBI中创建一个多值参数。

这是我的数据集查询,其最后一行似乎导致了问题。

select C."CUSTOMERNAME", C."CITY", D."YEAR", P."NAME"
from "CUSTOMER" C, "DAY" D, "PRODUCT" P, "TRANSACTIONS" T
where C."CUSTOMERID" = T."CUSTOMERID"
and D."DAYID" = T."DAYID"
and P."PRODUCTID" = T."PRODUCTID"
and _CITY_

我在我的数据集中打开脚本之前创建的内容如下:

this.queryText = this.queryText.replace(_CITY_, " CUSTOMER.CITY in ( "+params["cp"].value+" ) "); 

我的参数设置为字符串,显示类型动态列表框。

当我运行报告时,我收到了这个错误。

org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "
this.queryText = this.queryText.replace(_CITY_, " CUSTOMER.CITY in ( "+params["cp"].value+" ) "); 
":
Fail to execute script in function __bm_beforeOpen(). Source:

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

您好我设法解决了这个问题。这是我的代码:

var substring = "" ;
var strParamValsSelected=reportContext.getParameterValue("citytext");
substring += "?," + strParamValsSelected ;
this.queryText = this.queryText.replace("'xxx'",substring);

你可以看到“?”在我的参数之前是必要的。也许这会对某人有所帮助。非常感谢您的评论。

答案 1 :(得分:0)

如果您使用 SpagoBI服务器高级图表(JFreeChart Engine),您可以使用($ P {param_url})。

所以您的查询也可以是:

select C."CUSTOMERNAME", C."CITY", D."YEAR", P."NAME"
from "CUSTOMER" C, "DAY" D, "PRODUCT" P, "TRANSACTIONS" T
where C."CUSTOMERID" = T."CUSTOMERID"
and D."DAYID" = T."DAYID"
and P."PRODUCTID" = T."PRODUCTID"
and CUSTOMER.CITY in ($P{param_url})