我有一個Maximo的BIRT報告和兩個腳本數據集。採購申請的主要數據集和採購申請行的子數據集。問題是子數據集適用於單個購買請求,併爲任何給定PR打印正確的數據,但如果您爲多個PR運行報表,則會爲每個PR打印第一個PR的pr行。BIRT數據集爲每個項目打印相同的數據
所以我得到的是這樣的。
PR 10
行1
行2
PR 20
行1
2行
當PR 20應該有10條線,它僅給了我兩個,這兩個和PR 10一樣。我設定了該報告通過填充名爲mySQL的全局變量並將其打印在報告上來打印出由數據集創建的SQL。 SQL看起來很好,我可以將它剪切並粘貼到我的SQL編輯器中並獲得正確的結果,但這不是報表上打印的內容。我檢查過表綁定,我試圖清空腳本中的數據集並強制重新填充,但沒有任何效果。我已經創建了一個新的數據集,但是新的數據集完成了同樣的事情。
有沒有人遇到過這個?任何想法都可以檢查什麼?或者我該如何清理每個PR的數據集,以便PRLINE數據集對每個PR都是乾淨的?
這是數據集的開放腳本。
lineDataSet = MXReportDataSetProvider.create(this.getDataSource().getName(), this.getName());
lineDataSet.open();
var sqlText = new String();
// Add query to sqlText variable.
sqlText = "select orderqty, orderunit, itemnum, description, unitcost, linecost, prnum, prlinenum, refwo, assetnum, location, project,tasknum, siteid from maximo.prline_vw "
+ " where prnum = '" + rows[0]["prnum"].replace(/'/g,"''") + "'"
+ " and siteid = '" + rows[0]["siteid"] + "'"
//+ " where prnum = '" + row._outer["prnum"] + "'"
//+ " and siteid = '" + row._outer["siteid"] + "'"
// Include the Maximo where clause
//+ " and " + params["where"]
;
lineDataSet.setQuery(sqlText);
mySQL = sqlText;
這就是抓取腳本。
if (!lineDataSet.fetch())
return (false);
// Add a line for each output column
// The specific get method should match the data type of the output column.
row["prlinenum"] = lineDataSet.getString("prlinenum");
row["orderqty"] = lineDataSet.getFloat("orderqty");
row["orderunit"] = lineDataSet.getString("orderunit");
row["unitcost"] = lineDataSet.getFloat("unitcost");
row["linecost"] = lineDataSet.getFloat("linecost");
row["prnum"] = lineDataSet.getString("prnum");
row["itemnum"] = lineDataSet.getString("itemnum");
row["refwo"] = lineDataSet.getString("refwo");
row["siteid"] = lineDataSet.getString("siteid");
row["description"] = lineDataSet.getString("description");
row["project"] = lineDataSet.getString("project");
row["tasknum"] = lineDataSet.getString("tasknum");
row["assetnum"] = lineDataSet.getString("assetnum");
row["location"] = lineDataSet.getString("location");
return (true);
您是否嘗試通過屬性 - >數據集 - >高級 - >需要數據引擎緩存= false來禁用數據集緩存? – SiMemon 2014-09-02 05:49:47
我無法找到屬性SiMemon。我在BIRT 3.7.1上我的版本上有這個屬性嗎? – user3393181 2014-09-03 13:25:59
你是對的,它在BIRT 3.7.1中不可用。你爲什麼不升級到更新的版本? – SiMemon 2014-09-04 05:28:30