SSRS Chart-Report Teil 2: Farbschema anpassen und Filter-Parameter hinzufügen

Ein eigenes Farbschema in einem Chart-Diagramm zu verwenden, ist immer dann sinnvoll, wenn das automatisch vergebene Schema den Anwender mehr verwirrt als unterstützt. Zusätzlich integrierte Filter-Parameter können die gewünschte Usability ebenfalls erhöhen.

In SSRS Chart-Report Teil 1 habe ich erklärt, wie man eine graphische Auswertung über die Anzahl der am Tag durchgeführten Builds erstellt. Dabei ist ein Säulendiagramm entstanden mit dessen Hilfe man besser erkennen kann, wie oft ein Build ausgeführt wurde und welchen Status dieser hatte.

Einige von Euch werden sicherlich bemerkt haben, dass die Farbe „rot“ für einen erfolgreichen Build etwas unglücklich ist. Das liegt daran, dass das Farbschema des Reports automatisch vom Report Builder erzeugt wurde und leider etwas unpassend ist. Aber glücklichweise lässt es sich anpassen.

BuildReport2_reports

Eine weitere Schwäche des Reports ist die fehlende Möglichkeit den Bericht auf verschiedene Build Definitionen und Betrachtungszeiträume anzuwenden, ohne jedes mal den Report an sich anzupassen. Mit entsprechenden Parametern wäre der Bericht wesentlich individueller und flexibler.

Um die genannten „Mängel“ zu bereinigen sind folgende Schritte notwendig:

1. Filterkriterium „Datum“ als Parameter kennzeichnen:

Nach dem Öffnen des vorhandenen Berichts, navigieren wir zum DataSet und öffnen dessen Query-Designer. Im rechten oberen Bereich befinden sich die Filterkriterien der Query und diese gilt es nun anzupassen.

parameter IDas Filterkriterium „Date“ muss als Parameter gekennzeichnet werden, damit später im Bericht ein Datumsbereich angeben werden kann. Dazu setzen wir ein Häkchen in die beiden Checkboxen in der letzten Spalte der Zeile „Date“.

Dadurch werden unter dem Parameter-Bereich des Reports die Parameter „FromDateDate“ und „ToDateDate“ angelegt. Leider gibt es mit diesen vom Report Builder erzeugten Parametern ein kleines Problem. Sie werden im Bericht nur als Comboboxen angezeigt, welche die Datumswerte nur in einer laaaangen Liste darstellen. Viel besser wäre es doch, wenn man das Datum über ein Calendar Control auswählen könnte.

Um das zu erreichen, müssen wir zwei Hilfsparameter per Hand anlegen.

parameter IV

FromParameter:

  1. In den Allgemeinen Einstellungen es Parameters muss der Datentyp von Text auf Datum/Uhrzeit geändert werden
  2. Unter den Verfügbaren Werten muss die Option „Keiner“ ausgewählt werden
  3. und in den Standartwerten die Expression =DateAdd(„d“, -7, Today())

ToParameter:

  1. In den Allgemeinen Einstellungen es Parameters muss der Datentyp von Text auf Datum/Uhrzeit geändert werden
  2. Unter den Verfügbaren Werten muss die Option „Keiner“ ausgewählt werden
  3. und in den Standartwerten die Expression =Today()

Bei den anderen Date-Parametern „FromDateDate“ und „ToDateDate“ sind anschließend folgende Einstellungen zu ändern:

FromDateDate:

  1. In den Allgemeinen Einstellungen es Parameters muss die Sichtbarkeit auf „Intern“ gesetzt werden
  2. Unter den Verfügbaren Werten muss die Option „Keiner“ ausgewählt werden
  3. und in den Standartwerten die Expression=“[Date].[Date].&[“ + CDate(Parameters!FromParameter.Value).ToString(„s“) + „]“

ToDateDate:

  1. In den Allgemeinen Einstellungen es Parameters muss die Sichtbarkeit auf „Intern“ gesetzt werden
  2. Unter den Verfügbaren Werten muss die Option „Keiner“ ausgewählt werden
  3. und in den Standartwerten die Expression=“[Date].[Date].&[“ + CDate(Parameters!ToParameter.Value).ToString(„s“) + „]“

Durch diese Änderungen sollten nun zwei Calendar Controls im Bericht zur Verfügung stehen, mit dessen Hilfe ein Datumsbereich ausgewählt werden kann.

2. Filterkriterium „Build Definition Name“ als Parameter kennzeichnen

Um ebenfalls nach verschiedenen Build Definitions Filtern zu können, müssen wir noch den „Build Definition Name“ als Parameter aufnehmen. Dazu wird ebenso vorgegangen, wie bei den Datum-Parametern.

BuildReport_Parameter3

Damit erhalte ich alle Build Definitionen, die in der Team Collection vorhanden sind. Wenn nur Build Definitionen aus einem bestimmten Team Projekt zur Auswahl stehen sollen, dann ist noch der nächste Schritt notwendig.

3. Eigenes DataSet „dsBuildName“ anlegen

Wir legen ein neues DataSet an und benennen es „dsBuildName“. Als DataSource wählen wir ebenfalls die „Tfs2010OlapReportDS“ aus und definieren über den Query-Designer eine Abfrage, welche den „Build Definition Name“ ausgibt und nach dem Team Projekt filtert.

Wenn das erledigt ist, gehen wir zurück in die Parameterübersicht des Reports und öffnen den zuvor erstellten Parameter aus dem Default-DataSet. Dieser Parameter sollte „BuildBuildDefinitionName“ heißen.

In den Einstellungen für die verfügbaren Werte ändern wir nun das DataSet auf unser gerade erstelltes „dsBuildName“-DataSet ab und geben sowohl für den Wert als auch für die Bezeichnung den „Build_Definition_Name“ an. Dadurch erscheinen in der Combobox des Reports nur noch die tatsächlich für dieses Team Projekt zur Verfügung stehenden Build Definitionen.

BuildReport_mitFilter

4. Änderung der Status-Farben

Zu guter letzt ändern wir noch das Farbschema des Reports. Durch das Klicken mit der rechten Maustaste auf einen Balken im Diagramm, erhält man die Möglichkeit die Eigenschaften des Diagramms zu ändern. Im Bereich „Ausfüllen“ („Fill“) wird die Hintergrundfüllfarbe der Balken gesetzt. Diese wird standardmäßig vom Report Builder selbst vergeben. Dies kann man durch eine eigene Expression (fx) ändern:

=IIF(Fields!Build_Status_Name.Value = „Stopped“, „#d4d4d4“, IIF(Fields!Build_Status_Name.Value = „Failed“, „#ef2312“, IIF(Fields!Build_Status_Name.Value = „Partially Succeeded“, „#f09f05“, „#6b9006“)))

BuildReport2_mitFarben

Nach all diesen Änderungen haben wir nun einen flexibleren und intuitiveren Report erstellt, der sicherlich noch nicht das Maß aller Dinge ist, aber schon ziemlich viel Aussagekraft besitzt. Darauf lässt sich in Zukunft aufbauen.

Wer mehr über das Anpassen von Reports wissen will, findet unter http://msdn.microsoft.com/en-us/library/ff647430.aspx viele gute Informationen