2016-07-26 93 views
1

我試圖在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: 

任何人都可以幫我嗎?

+0

你在哪裏運行報告?在spagobi服務器或工作室?要麼..?? –

+0

在工作室。我解決了這個問題。我必須通過「?」作爲我的列表框字符串數組的第一個元素,然後是其餘的元素。我從來沒有見過這樣的例子。現在我遇到了將報告部署到服務器的問題。 **參數「CITYPARAM」的類型預計爲「Object []」,而不是「java.lang.String」。**我想問題是我在studio中的參數設置爲列表框。我不知道如何用文本框做到這一點,因爲beforeOpen腳本中的典型替換不起作用。 「?」在我的querry是必要的。我很高興你在這裏marc_s – LucasPG

+1

是的你是對的。這是因爲參數類型。 將參數類型更改爲String。在beforeOpen腳本中,嘗試 'this.queryText = this.queryText +「和CUSTOMER.CITY in(」+ params [「cp」]。toString()。replace(「;」,「,」)+「)」'this爲我工作。 –

回答

2

你好,我設法解決這個問題。這裏是我的代碼:

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

正如你可以看到「?」在我的參數之前是必需的。也許它會幫助別人。非常感謝您的評論。

0

如果使用SpagoBI服務器高圖表(JFreeChart的引擎),你可以只用($ 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})