In Reporting Service lässt sich die Gruppierung einer Tabelle, einer Matrix oder eines Charts extrem dynamisch gestalten. Als Grundlage für dieses Beispiel dient die Datenbank „AdventureWorksDW2008R2“.
Das Ergebnis sollte in etwa so aussehen:
1. DataSet mit folgendem Query anlegen:
SELECT
PC.EnglishProductCategoryName AS Category
,PSC.EnglishProductSubcategoryName AS Subcategory
,P.EnglishProductName AS ProductName
,G.EnglishCountryRegionName AS Country
,G.StateProvinceName AS State
,FIS.SalesAmount
FROM dbo.FactInternetSales FIS
INNER JOIN dbo.DimProduct P
ON FIS.ProductKey = P.ProductKey
INNER JOIN dbo.DimProductSubcategory PSC
ON P.ProductSubcategoryKey = PSC.ProductSubcategoryKey
INNER JOIN dbo.DimProductCategory PC
ON PSC.ProductCategoryKey = PC.ProductCategoryKey
INNER JOIN dbo.DimCustomer C
ON FIS.CustomerKey = C.CustomerKey
INNER JOIN dbo.DimGeography G
ON C.GeographyKey = G.GeographyKey
2. Matrix aus Toolbar hinzufügen
3. Feld „Category“ auf RowGroups ziehen
4. Feld „Country“ auf ColumnGroups ziehen
5. Feld „SalesAmount“ in Data-Feld der Matrix ziehen
6. Feld „Subcategory“ auf RowGroups unter Gruppe „Category“ ziehen
7. RowGroup „Category“ umbenennen in „ParentRowGroup“
8. RowGroup „Subcategory“ umbenennen in „ChildRowGroup“
9. ColumnGroup „Country“ umbenennen in ColumnGroup
10. Die Textboxen der Matrix entsprechend benennen
11. Parameter „ParentGroupParam“ anlegen:
12. Zwei weitere Parameter anlegen:
|
NAME |
PROMPT |
|
ChildRowGroupParam |
Select Child Row Group |
|
ColumnGroupParam |
Select Column Group |
13. Eigenschaften von „ParentGroupParam“ öffnen und unter „Available Values“ folende Einträge vornehmen:
14. Auf gleiche Weise werden die Einträge in „ChildGroupParam“ vorgenommen:
|
LABEL |
VALUE |
|
Country |
Country |
|
State/Province |
State |
15. Im Parameter „ChildRowGroupParam“ wird eine Anzeige-Logik hinterlegt. Dabei wird dieser Parameter in Abhängigkeit zum Parameter „ParentRowGroupParam“ gebracht:
|
LABEL |
VALUE |
|
=IIF(Parameters!ParentRowGroupParam.Value= "Category","ProductSubcategory",Nothing) |
=IIF(Parameters!ParentRowGroupParam.Value= "Category","Subcategory",Nothing) |
|
Product Name |
ProductName |
16. Eigenschaften von „ParentRowGroup“ öffnen und den Expression-Button neben „Group on:“ drücken und folgende Expression eingeben:
=Fields(Parameters!ParentRowGroupParam.Value).Value
17. In gleicher Weise werden auch die anderen Gruppen behandelt:
|
GROUP |
GROUP ON EXPRESSION |
|
ChildRowGroup |
=Fields(Parameters!ChildRowGroupParam.Value).Value |
|
ColumnRowGroup |
=Fields(Parameters!ColumnGroupParam.Value).Value |
18. In den Textboxen werden die gleichen Expressions wie in der „Group on“ – Expression verwendet:
|
TextboxName |
Expression |
|
ParentRowGroup |
=Fields(Parameters!ParentRowGroupParam.Value).Value |
|
ChildRowGroup |
=Fields(Parameters!ChildRowGroupParam.Value).Value |
|
ColumnRowGroup |
=Fields(Parameters!ColumnGroupParam.Value).Value |
Der Bericht kann nun nach verschiedenen Kriterien gruppiert werden.
