構建2相關數據集,第一個用於報告內容,第二個用於列標籤列表。
報表內容的數據集必須具有固定數量的列和名稱。您可以分配一些最大數量的列。
在這個例子中,我將前兩列固定或始終可見,最多4列可通過多值參數進行選擇顯示,或取決於查詢條件。和往常一樣,我們也可能有一個總數。因此,它可能看起來像這樣:
Fixed01, Fixed02, Dyna01, Dyna02, Dyna03, Dyna04, Total
其值的第二個數據集將是這樣的:
Name Label
---- -----
Dyna01 Label01
Dyna02 Label02
Dyna03 Label03
我省略了第4個標籤,以證明並非所有列正在使用的一某些查詢條件。請記住,這兩個數據集都與同一個查詢有關。
現在創建一個名爲@columns的參數;用第二個數據集填充其可用值和默認值。
對於每個那些4個動態的列,設置列可見性用下面的表達式:
=IIf(InStr(join(Parameters!columns.Value,","),"Dyna01"),false,true)
和每個他們的列標題文本框的,使用下面的表達式:
=Lookup("Dyna01", Fields!Name.Value, Fields!Label.Value, "dsColumns")
至於總計,這裏是它的能見度表達式:
= IIf(InStr(join(Parameters!columns.Value, ","), "Dyna01"), false, true)
AndAlso IIf(InStr(join(Parameters!columns.Value, ","), "Dyna02"), false, true)
AndAlso IIf(InStr(join(Parameters!columns.Value, ","), "Dyna03"), false, true)
AndAlso IIf(InStr(join(Parameters!columns.Value, ","), "Dyna04"), false, true)
這裏是它的價值觀:
= IIf(InStr(join(Parameters!columns.Value, ","), "Dyna01"), Fields!C01.Value, 0)
+ IIf(InStr(join(Parameters!columns.Value, ","), "Dyna02"), Fields!C02.Value, 0)
+ IIf(InStr(join(Parameters!columns.Value, ","), "Dyna03"), Fields!C03.Value, 0)
+ IIf(InStr(join(Parameters!columns.Value, ","), "Dyna04"), Fields!C04.Value, 0)
就是這樣,希望它有幫助。
獎金,即第二個數據集,dsColumns
,也可以容納其他列屬性,如:顏色,寬度,字體等
我們可以看到一個或兩個您的示例數據?很可能你用動態列做的事情可能會變成永久列,或者成爲數據行。 – DForck42 2009-05-21 16:29:55
我現在不在工作,但是我有兩個版本。一個使用動態列,另一個是更「關係」的版本,我將每個版本都拉回自己的數據集中,並且與另一個版本相關。這是非常可能的,但我似乎無法在SSRS中找到一種方式來將這些行數據表示爲列(實質上是它們的樞軸) – JoshReedSchramm 2009-05-25 17:11:06