Arno Cebulla

 

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:

clip_image002

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:

 clip_image004

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:

clip_image006

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.