Der Artikel ist aktuell bis Version 2022.1.
FastReport.NET verfügt über ein großartiges Tool für die Anzeige von Daten als Sammeltabelle, oder Matrix. Viele von uns würden gerne die Funktionalität von Matrizen verbessern, z. B. mit einer so nützlichen Option wie einer Auswahl von N Top-Werten. Die Auswahl der ersten N-Zeilen aus einer Datenquelle scheint sehr einfach. Neben der Auswahl der Top-Werte ist es jedoch notwendig, alle übrigen Daten in einer einzigen Aufzeichnung zu gruppieren, was das Hauptproblem darstellt. Dies kann nicht mit den Standart- Werkzeugen des Matrix-Objekts erfolgen.
Wir müssen also die Daten so vorbereiten, dass sie sowohl die Top-Werte als auch die Summe aller übrigen Werte enthalten. Dieses Mittel ist für SQL-Datenbanken geeignet. Alles, was wir dafür tun müssen, ist, eine SQL-Abfrage zu schreiben.
Nehmen wir an, wir erstellen eine Liste der Gehälter der Mitarbeiter nach Jahren. Im Datenquelleneditor können wir eine SQL-Abfrage verwenden, wenn eine SQL-Datenbank verwendet wird.
So sieht die SQL-Abfrage aus, die 2 Top-Werte und die Summe aller übrigen Werte auswählt:
SELECT top 2 name, year, month, salary FROM crosstest ORDER BY salary UNION SELECT 'Other' AS name, year, month, SUM(salary) FROM crosstest WHERE name NOT IN (SELECT Top 2 name FROM crosstest ORDER BY salary) GROUP BY name, year, month
Hier kombinieren wir zwei Abfragen mit einem Operator union. In der ersten Abfrage wählen wir die Top-Werte, in der zweiten Abfrage - die Summe aller übrigen Werte.
Als Ergebnis erhalten wir die folgende Matrix:
Wie Sie sehen, können wir durch die Verwendung verschiedener Techniken zur Aufbereitung der Ausgangsdaten den gewünschten Effekt erzielen, auch wenn eine solche Funktionalität im Bericht-Generator ursprünglich nicht vorgesehen war.