2013-04-29 73 views
0

我有一個輸入參數和兩個多值參數。我將設置兩個多值參數爲可選項。在沒有選擇兩個多值參數的情況下,是否有任何方法可以從報告中輸入結果? 我試過這個,但它不起作用:Link帶輸入參數的可選參數,該怎麼做?

+0

這應該可以正常工作。你能解釋一下你收到的錯誤嗎?基本的想法是讓你的多值參數設置爲允許空值(除非你使用另一個值),那麼你給多值參數一個空值,顯示文本爲「全部」或任何上下文適合,然後忽略當你的查詢的值爲null時。這實際上使參數可選,特別是如果您將該參數默認爲「全部」值。 – 2013-04-29 15:25:25

+0

嗨thx評論。我收到一個錯誤「'blbala'參數缺少一個值」。 在哪裏-clausel我這樣做: 順便說一下,((@Employee_ID是NULL)或(Employee_ID IN(7750,2250)) – Pera 2013-04-30 05:52:17

+0

兩個多值參數是依賴的。它喜歡國家和位置。如果您選擇英格蘭比你得到的所有位置(倫敦等)或你選擇德國(慕尼黑,漢堡等)。我會得到默認值。 – Pera 2013-04-30 07:25:35

回答

0

因此,考慮到國家,生病試圖做一個快速的例子。我意識到這不是一個多值參數解決方案,但它可以滿足您的需求。在RDL中,您將定義兩個參數,一個用於國家,另一個用於城市或任何其他參數。然後,您可以從存儲過程填充國家/地區參數,並將名稱用作顯示文本,並將ID用作值。 (如果你設置的默認值設置爲null,都將是第一項選擇)

SELECT C.Name, C.ID From Countries AS C 
UNION 
SELECT 'All', NULL 

enter image description here

然後,與使用所選擇的值,爲國家參數的另一個程序填充城參數值(這會創建一個前向依賴關係,因此請確保該國家在參數列表中顯示在城市之前,否則在構建報告時會出現錯誤)。

DECLARE @Country_ID int 
SELECT C.Name, C.ID FROM Cities AS C 
WHERE (C.Country_ID = @Country_ID) 
UNION 
SELECT 'All', NULL 

現在你有你的程序返回的結果集的報告同時接受一個公司,和城市ID參數,並在where子句中,你將有這樣的事情:

DECLARE @Country Int, 
     @City Int 

SELECT * FROM X 
WHERE (X.Country_ID = @Country_ID OR @Country_ID IS NULL) AND 
     (X.City_ID = @City_ID OR @City IS NULL) 

顯然你將不得不稍微改變一下以適應你的查詢,但是這應該允許用戶選擇一個國家,一個國家和一個城市,或者根本沒有。

PS。如果您計劃將null用作標記值,請不要忘記檢查相關參數的「允許空值」複選框。

enter image description here