2012-11-14 143 views
0

我是Birt的新手,我想開發一個接受「多個動態範圍參數」的報告。 給你更好地說明問題的例子:birt動態範圍參數

     數據集:     :客戶     :idCustomer,名

我想用戶將能夠插入多個idCustomer範圍來檢索名稱。
例如: 用戶可能希望客戶205和300之間以及501和670之間以及800和920之間的ID號...

我通常做同樣的事情上BO Crystal報表設置「允許多值「和」允許範圍值「作爲輸入參數。在Birt上是否存在類似的東西?

我上傳的圖片在這裏:http://i.stack.imgur.com/uvz7F.jpg。這是一個用於輸入參數的BO截圖,帶有「允許多值」和「允許範圍值」。
感謝
      GG

回答

1

簡短的回答:沒有。

較長的回答:BIRT沒有選項來啓用單個參數來取一個範圍的值。

它有一個選項允許單個參數獲取多個值,但僅限於ListBox參數。此外,只能將單個報表參數值綁定到給定的數據集參數,這意味着您無法選擇數據集查詢中的多個參數值(假設您正在使用關係數據源);相反,您需要在Edit Dataset對話框的Filters選項卡中,根據參數值爲數據集添加過濾器。 (這仍然只允許您指定參數的多個單獨值,而不是指定多個值的範圍。)

(或者,您可以爲數據集編寫一個beforeOpen事件腳本,以便插入參數的多個值直接插入數據集的查詢文本中,而不是將報表參數綁定到數據集參數;但是,這會使報表打開SQL注入攻擊的風險,或者,您可以向BIRT添加一個插件以爲您綁定多個參數值。因此

的選項有:

  1. 建立一個單獨的列表Box參數,啓用多個值,允許用戶選擇所需的所有單個值,並根據參數值過濾數據集(或使用beforeOpen事件腳本或BIRT插件)。
  2. 設置兩個參數(用於範圍的開始和結束)以允許用戶指定要選擇的單個值範圍,並將報告參數綁定到查詢中等效的一對數據集參數。
  3. 設置Ñ對參數,以允許用戶指定多達Ñ範圍內的值的將被選擇(例如,設置了10個參數,以使用戶能夠指定到5米範圍內的值的),和將報告參數綁定到查詢中的等效數據集參數。
  4. 設置單個文本框參數以允許用戶輸入自由格式的範圍(例如格式爲[205..300],[501..607]),然後爲數據集編寫beforeOpen事件腳本以解析輸入的所需範圍的參數值並修改查詢文字相應。

請注意,最後一個選項強烈棄用,因爲它需要更多的工作,刪除指定有效值的選項並打開報告的風險爲SQL injection attacks

+0

感謝您的詳盡答覆。順便說一下,第一個對我不好,因爲我有幾千個客戶。第二個是最簡單的方法,但限制用戶。在第三個中,我將能夠知道用戶想要的範圍,然後我將管理空範圍。第四是一個很好的折衷方案,但正如你上面寫的那樣,它被強烈棄用並引入了SQL注入攻擊。 –