2012-09-17 190 views
1

使用SSRS 2008 R2和每個值知道,如果是可能產生用於在多值參數中選擇的每個值的子報告?SSRS 2008 - 子報表從多值參數

讓我們來想象你多值參數「參數α」具有四個值選擇(值1,值2,值3和值4)。我想爲每個這些值生成子報告(將值作爲單個參數傳遞)。當然,我可以改變程序來處理多值參數,但由於性能和緩存,我真的不想。

感謝您的任何建議。

回答

4

要做到這一點,你將不得不把子報告放入列表或tablix。據我知道有來有超過一個多值參數的值,該列表或表矩陣迭代沒有簡單的方法。它只會接受一個數據集。

所以我能想到的唯一解決方法就是將參數分成數據集中的一組行,這對於SQL來說可能並不重要。但是,如果參數的可用值來自數據集,情況會有所改善:您可以將tablix/list掛接到數據集並過濾未在參數中選擇的項目。

編輯:我已經找到了一個稍微hackish的解決展開多值參數到DataSet,通過構建集查詢作爲一個表達式。假設參數@MultiParamX此表達式將創建輸出在一列中的所有選定值的查詢:

="SELECT '" 
& 
Join(Parameters!MultiParamX.Value, "' MyParam UNION ALL SELECT '") 
& 
"' MyParam" 

這可生成查詢,如以下的(重新格式化爲可讀性):

SELECT 'A' MyParam 
UNION ALL 
SELECT 'B' MyParam 
UNION ALL 
SELECT 'C' MyParam 
-- Etc. for all selected values 

這將生成一個結果集如:

┌─────────┐ 
│ MyParam │ 
├─────────┤ 
│ A  │ 
│ B  │ 
│ C  │ 
│ Etc. │ 
└─────────┘ 
+0

嗨Jeroen,謝謝你的回答,你是對的。如果參數來自數據集,實際上很簡單。唯一值得一提的是使用過濾器而不是可見性,以避免不必要的過程調用。 – ulath

+0

我已更新我的答案,建議過濾而不是使用可見性。 – Jeroen