Diagrammverwendung bei gruppierten Daten

Navigation:  Client Management > Reports >

Diagrammverwendung bei gruppierten Daten

Version 1.0.0

Falls Sie in einem Report, der auf verschachtelten Datensätze aufbaut, Diagramme verwenden möchten, so müssen Sie die Daten manuell aufbereiten. Dies soll am folgenden Beispiel exemplarisch dargestellt werden.

 

Der Report soll eine Auflistung aller Betriebssysteme enthalten. Zu jedem Betriebssystem soll zudem eine eigene Liste mit allen Clients, auf denen das entsprechende Betriebssystem läuft, erstellt werden. Am Ende des Reports soll die Verteilung der Betriebssysteme in einem Tortendiagramm grafisch dargestellt werden. Bevor dies jedoch geschehen kann, muss die Anzahl der Clients eines Betriebssystem manuell berechnet werden.

 

Erstellen Sie zunächst einen neuen Report (siehe Report hinzufügen). Falls bereits die gewünschte Abfrage besteht, so kann diese ausgewählt werden. Andernfalls können Sie eine eigene Abfrage für den Report erstellen. Das hier verwendete Beispiel benötigt lediglich die Informationen "OS Name" und "Computer Name".

 

Fügen Sie anschließend einen Gruppenkopf und Gruppenfuß ihrem Report hinzu. Hinterlegen Sie den Betriebssystemnamen im Gruppenkopf und erstellen Sie ein entsprechendes Feld für die Anzahl der Clients im Gruppenfuß. Die dazugehörige Variable wird hinterher erstellt. Fall gewünscht, können Sie auch noch zusätzliche Informationen, wie z.B. das Datum, hinzufügen.

 

Reports_GroupdataDiagram_1

Erstellen von Gruppenkopf und Gruppenfuß

 

Für das Diagramm können Sie das Band "Reportzusammenfassung" verwenden. Dies dient nur der logischen Strukturierung und ist nicht notwendig. Fügen Sie anschließend das Diagramm ein. Achten Sie hierbei darauf, als Datenquelle "Fixe Daten" anzugeben. Bei Bedarf können Sie auch weitere optische anpassen vornehmen.

 

Reports_GroupdataDiagram_2

Diagramm einfügen

 

Wechseln Sie nun in den Code-Tab des Reporteditors. Hier müssen zunächst die benötigten Variablen definiert werden. Insgesamt werden 4 verschiedene Variablen benötigt:

Anzahl: Enthält die Anzahl der Clients eines Betriebssystem
Anzahl_Gesamt: Enthält die Gesamtanzahl an Clients
X_Chart: Enthält die Liste mit verschiedenen Betriebssystemen
Y_Chart: Enthält die Liste mit der Anzahl der Clients der verschiedenen Betriebssystemen

 

Der benötigte Quellcode für die einzelnen Bereiche des Reports kann nun in die entsprechenden OnBeforePrint-Prozeduren der einzelnen Bänder eingefügt werden. Zunächst einmal müssen die Variablen mit Ausgangswerten belegt werden. Dies geschieht im ReportTitle bzw. im GroupHeader. Achten Sie darauf, die Variable Anzahl im GroupHeader auf den Wert 0 zu setzen. Auf diese Weise kann die korrekte Anzahl der Clients eines Betriebssystems berechnet werden. Anschließend können Sie im MasterData die Anzahl, sowie die Anzahl_Gesamt jeweils um Eins erhöhen. Im GroupFooter können nun die Daten zu einer Liste zusammengeführt werden. Die Daten werden als String gespeichert und durch ein ";" getrennt (Beispiel: "Windows 7;Windows XP;").

 

Abschließend können die Daten in der ReportSummary dem Diagramm zugeordnet werden.

 

Quellcode

//Variablen definieren

var           
Anzahl : int;
Anzahl_Gesamt : int;
X_Chart,Y_Chart : String;

 
//Ausgangswerte festlegen  
procedure ReportTitle1OnBeforePrint(Sender: TfrxComponent);
begin
Anzahl_Gesamt := 0;
X_Chart := ''; 
Y_Chart := ''; 
end;

 
//Zähler wieder auf 0 setzen   
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
begin
Anzahl := 0;                          
end;

 
//Clients zählen     
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
  Anzahl := 1 + Anzahl;
  Anzahl_Gesamt := 1 + Anzahl_Gesamt;         
end;

 
//Zur Liste der Clients und der Menge hinzufügen
procedure GroupFooter1OnBeforePrint(Sender: TfrxComponent);
begin
  X_Chart := X_Chart + Memo4.Value + ';' ;
  Y_Chart := Y_Chart + IntToStr(Anzahl) + ';' ;         
end;
  
//Daten an das Diagramm übergeben 
procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
begin
  Chart2.SeriesData[0].XSource := X_Chart;
  Chart2.SeriesData[0].YSource := Y_Chart; 
end;
  
begin
  
end.

 

 

Hinweis

Hinweis:

Kommt es bei einem Diagramm zu Darstellungsfehlern, so ist dies oft auf eine nicht ausreichende Anzeigefläche zurückzuführen. Versuchen Sie in diesem Fall nicht benötigte Beschriftungen auszublenden, z.B. unter Pie -> Marks -> Visible = "False". Zudem kann es hilfreich sein die Position der Legende zu ändern, unter Diagramm -> Alignment = "laBottom" oder "laTop"

 

Beispieldiagramm

Reports_GroupdataDiagram_3

 

Beispiel: Tortendiagramm

Zuletzt bearbeitet am 13.11.2019