Dynamisierung von Gruppen
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.
Neuen Kommentar schreiben