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.
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.
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.
//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: |
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" |
Beispiel: Tortendiagramm
Zuletzt bearbeitet am 13.11.2019