1
使用SSRS 2008 R2和每個值知道,如果是可能產生用於在多值參數中選擇的每個值的子報告?SSRS 2008 - 子報表從多值參數
讓我們來想象你多值參數「參數α」具有四個值選擇(值1,值2,值3和值4)。我想爲每個這些值生成子報告(將值作爲單個參數傳遞)。當然,我可以改變程序來處理多值參數,但由於性能和緩存,我真的不想。
感謝您的任何建議。
使用SSRS 2008 R2和每個值知道,如果是可能產生用於在多值參數中選擇的每個值的子報告?SSRS 2008 - 子報表從多值參數
讓我們來想象你多值參數「參數α」具有四個值選擇(值1,值2,值3和值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. │
└─────────┘
嗨Jeroen,謝謝你的回答,你是對的。如果參數來自數據集,實際上很簡單。唯一值得一提的是使用過濾器而不是可見性,以避免不必要的過程調用。 – ulath
我已更新我的答案,建議過濾而不是使用可見性。 – Jeroen