簡短的回答:沒有。
較長的回答:BIRT沒有選項來啓用單個參數來取一個範圍的值。
它有一個選項允許單個參數獲取多個值,但僅限於ListBox參數。此外,只能將單個報表參數值綁定到給定的數據集參數,這意味着您無法選擇數據集查詢中的多個參數值(假設您正在使用關係數據源);相反,您需要在Edit Dataset對話框的Filters選項卡中,根據參數值爲數據集添加過濾器。 (這仍然只允許您指定參數的多個單獨值,而不是指定多個值的範圍。)
(或者,您可以爲數據集編寫一個beforeOpen事件腳本,以便插入參數的多個值直接插入數據集的查詢文本中,而不是將報表參數綁定到數據集參數;但是,這會使報表打開SQL注入攻擊的風險,或者,您可以向BIRT添加一個插件以爲您綁定多個參數值。因此
的選項有:
- 建立一個單獨的列表Box參數,啓用多個值,允許用戶選擇所需的所有單個值,並根據參數值過濾數據集(或使用beforeOpen事件腳本或BIRT插件)。
- 設置兩個參數(用於範圍的開始和結束)以允許用戶指定要選擇的單個值範圍,並將報告參數綁定到查詢中等效的一對數據集參數。
- 設置Ñ對參數,以允許用戶指定多達Ñ範圍內的值的將被選擇(例如,設置了10個參數,以使用戶能夠指定到5米範圍內的值的),和將報告參數綁定到查詢中的等效數據集參數。
- 設置單個文本框參數以允許用戶輸入自由格式的範圍(例如格式爲
[205..300],[501..607]
),然後爲數據集編寫beforeOpen事件腳本以解析輸入的所需範圍的參數值並修改查詢文字相應。
請注意,最後一個選項強烈棄用,因爲它需要更多的工作,刪除指定有效值的選項並打開報告的風險爲SQL injection attacks。
感謝您的詳盡答覆。順便說一下,第一個對我不好,因爲我有幾千個客戶。第二個是最簡單的方法,但限制用戶。在第三個中,我將能夠知道用戶想要的範圍,然後我將管理空範圍。第四是一個很好的折衷方案,但正如你上面寫的那樣,它被強烈棄用並引入了SQL注入攻擊。 –