2011-11-15 105 views
1

要求如下:SSRS - 切換子報告由參數值

  • 分組層次結構應該是交換的,例如Country > City > DepartmentCountry > Department > City可以由最終用戶來選擇。
  • 對於最終用戶,應該只有一個報告。
  • 用戶需要的層次結構可以通過參數值進行選擇。
  • 報表數據只能加載一次,因爲查詢包含CPU密集型計算。

我想通過爲每個層次結構添加子報表來完成此操作。由於隱藏的子報表會自動加載,因此我無法切換多個子報表的可見性,或者數據將加載兩次。 Subreport的ReportName屬性不允許使用表達式。我可以使用自定義代碼來解決這個問題,或者什麼是可行的解決方案?

回答

1

有很多方法可以做到這一點。

如果數據集嵌入在報表上,那麼我認爲最簡單的方法是:

  1. 添加您的參數,讓我們稱之爲GroupingOrder,並進行硬編碼你的選擇:都說值設置爲1的標籤Country > City > Department,值爲2 Country > Department > City
  2. 將兩個計算的字段添加到SSRS中的數據集。 (右鍵單擊該數據集的名稱,然後選擇「添加計算字段...」一個命名爲「MiddleGroupName」,另一組場源,以公式像這樣的MiddleGroupName。「InnerGroupName」:

    =IIF(Parameters!GroupingOrder.Value = 1, Fields!City.Value, Fields!Department.Value)

  3. 使用這些計算領域的正常對照組在報告中

  4. 獎勵積分,設置基於參數列標題:爲中等組中的列標題可能是:

    =IIF(Parameters!GroupingOrder.Value = 1, "City", "Department")

另一種方法可能涉及將這些計算移入分組邏輯本身。

但在這種情況下,我會避開子報表。他們往往會傷害到性能並造成調試困難。

+0

非常好,得到了這個工作,謝謝:) – Bas