2014-01-08 36 views
1

我有一個使用如下查詢的BIRT報告。BIRT報告 - 通過腳本添加參數

select Dealer, Name from customerA where id = ? union all select Code as Dealer, last_name as Name from customerB where id = ? union all select Num as Dealer, owner as Name from customerC where id = ?

我在報告本身就是一個文本輸入框和一個刷新按鈕,重新加載報告。 也我的報告有參數調用'CUST_ID',我綁定在數據集中param_1,param_2和param_3以'?'替換。執行時標記。

如果我在參數彈出屏幕報告上輸入參數工作正常,但我需要在文本框中輸入id,並且一旦我按刷新鏈接重新加載報告相應。

如何添加輸入文本值(我知道我可以從腳本獲取它)並將其設置爲報告參數'CUST_ID'?

非常感謝您的幫助。

預先感謝您。

+1

您是否曾嘗試將'CUST_ID'參數添加到刷新報表時所用URL的末尾?它看起來像這樣; http://reports.com/run?__report=YourReport.rptdesign&CUST_ID=Value –

+0

謝謝@JamesJenkins的評論。這裏的事情是我沒有任何控制請求的URL。在'刷新'鏈接我只是使用鏈接屬性,並給出了相同的報告。我看到我可以通過數據源'beforeOpen'方法中的'this.queryText'獲取查詢文本。仍然不確定我在做什麼是正確的,因爲我是新來的BIRT。再次感謝您的回頭。如果你有什麼請告訴我。 – Sam

+0

我還沒有做到這一點,但我已經在http://developer.actuate.com/community/forum/上的幾篇文章中讀到過了。我想你要做的就是重做你的刷新按鈕,這樣你就可以控制url並且能夠在報告運行時用用戶輸入的值作爲參數來創建它。我有幾個報告,默認情況下運行爲html,幷包含一個鏈接來運行xls,我一直在考慮添加carry over參數功能給他們,但其他優先事項...如果你可以把一個'如何'答案我想閱讀它。 –

回答

3

我能通過在BIRT中使用腳本來解決這個問題。下面我列出了我遵循的步驟。

1.添加一個腳本,在頁面加載時啓動請求參數。 報告網址我可以通過在正常的javascript函數中使用var link=this;來訪問。

2.如上面詹姆斯提到的那樣,將我的參數添加到請求的末尾。謝謝詹姆斯。

3.取消新創建的網址link.href=url;這將刷新我在輸入框中輸入的值的報告。

4.in數據集我修改我的查詢爲'Select name from customerA'沒有任何where子句。

5.dataset beforeOpen腳本我添加了這些行和記錄被相應地過濾。

​​