SpagoBI多值参数(SpagoBI multi value parameter)

2019-09-27 04:35发布

我试图创建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:

任何人都可以帮我吗?

Answer 1:

你好,我设法解决这个问题。 这里是我的代码:

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

正如你所看到的“?” 我的参数前是必要的。 也许这将帮助别人。 非常感谢你的意见。



Answer 2:

如果您正在使用SpagoBI服务器高图表 (JFreeChart的引擎)/ JSChat引擎你可以在查询中使用($ P {} param_url),或使用Java脚本/ Groovy脚本建立动态查询

所以你的查询还可以是:

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}')


文章来源: SpagoBI multi value parameter