Rave Reports: CalcTotal und CalcController – Zwischensummen korrekt zählen

Mit den CalcTotal und CalcController Komponenten hat man in Rave Reports gute Tools zur Summenberechnung, zum Zählen oder auch zur Berechnung eines Durchschnitts zur Verfügung. Einiges gibt es aber zu beachten beim Einsatz dieser Komponenten.

Mitunter hat man einen Report mit einem Hauptband (beispielsweise den Daten eines Kunden) und einem Detailband, etwa mit Umsätzen zu dem Kunden. Beiden ist eine eigene DataView zugeordnet, wobei für das Umsatzband das Kundenband das zugeordnete Controllerband ist. Nun gilt es auch noch beide Tabellen miteinander zu verknüpfen, was über die Eigenschaften MasterDataView, Masterkey (Kundentabelle) und DataView, Detailkey (Umsatztabelle) gelingt.

Fügt man nun noch die passenden Felder aus der Kundentabelle für das Band mit den Kundendaten hinzu, und dies ebenso für das Detailband mit den Umsatzdatenfeldern, so bekommt man recht schnell im Designer einen Report hin, der oben die Kundendaten anzeigt und darunter entsprechende Umsatzdaten.

Nun möchte man aber oft in einem Fußbereich (Body Footer, zugeordnet dem Band mit den Umsatzdaten) auch noch Berechnungen ausgeben, also zum Beispiel Umsatzsummen oder auch einfach die Anzahl der Umsatzeinträge.

Berechnungen im Body Footer ausgeben

Hier geht man wie folgt vor:

  1. Man markiert den Hauptreport im Baum rechts, klickt auf Parameters und erstellt so Variablen, beispielsweise AnzahlUmsaetze
  2. Nun markiert man das Detail – Band, welches die Umsätze enthält, und fügt aus der Palette Report die Komponente CalcTotal hinzu.

Geht es um die Berechnung der Anzahl der Einträge, setzt man für CalcTotal folgende Eigenschaften:

  • CalcType = ctCount
  • DataView = DataView mit den Umsatzdaten
  • DestParam = die eben erstelle Variable AnzahlUmsaetze
  • Controller = Das DataBand, welches die Umsatzdaten enthält
  • DataField = ein zählbares Feld aus der Umsatz DataView – Tabelle

Im Body Footer des Umsatzbereiches fügt man nun eine DataText Komponente hinzu (Palette Report). Im Eigenschaftsdialog der DataText Komponente wählt man nun DataField und im Dialog, der sich öffnet, wählt man unter der Auswahlliste Project Parameters die Variable AnzahlUmsaetze aus.

Startet man seinen Report nunmehr, so kann es sein, dass an dieser Stelle 1 ausgegeben wird, obwohl vielleicht 5 Einträge vorhanden sind. Hierzu im Baum rechts die CalcTotal Komponente wählen und RunningTotal auf True setzen. Nun erscheint die korrekte Anzahl bei der Ausgabe. Das klappt wunderbar, solange man einen Kunden mit dessen Umsatzdaten hat. Hat man mehrere Kunden und Umsatzdaten ergibt sich das Problem das CalcTotal alle Umsatzeinträge der verschiedenen Kunden zusammenzählt, beim ersten Kunden stimmt es noch, aber ab dem zweiten werden die Einträge von Kunde 1 und von Kunde 2 aufaddiert usw.

Zwischensummen korrekt berechnen mit CalcController

Um dies zu lösen, gilt es noch eine CalcController Komponente hinzuzufügen. Diese fügt man in einen Kopfbereich (Body Header) des Umsatzblockes hinzu und weist dieser einen InitialValue von 0 zu. Bei unserer CalcTotal Komponente weist nun unter Initializer im Eigenschaftsfenster der Komponente die soeben hinzugefügte CalcController Komponente hinzu.

Dies bewirkt, dass der Zähler AnzahlUmsaetze bei jedem Kunden mit Beginn der Ausgabe von dessen Umsatzdaten auf 0 zurückgesetzt wird, sodass am Ende immer nur die Anzahl der Umsatzeinträge für genau diesen Kunden ausgegeben werden. Beim nächsten Kunden wird die Anzahl wieder auf Null zurückgesetzt und unsere Anzeige ist endlich korrekt.

Tipp: Bei RaveReports ist die Reihenfolge wichtig. Daher müssen CalcTotal Komponenten immer im Baum rechts oberhalb der Komponente liegen, die die berechneten Daten ausgibt.

Werbung

Aktuelle Top Aktionen bei Acer, HP, Lenovo, Bitdefender & Co

Angebote bei Acer
» Acer Spezialangebote:Rabatt und Extras auf viele Acer Notebooks, Convertibles, Gaming Notebooks und PC, Monitore und mehr


Angebote bei HP
» HP Herbst Angebote: Attraktive Herbstangebote mit aktuellen HP Notebooks und Convertibles und vieles mehr bis 31.10.2018


Angebote bei Lenovo
» Lenovo Top Wochenangebote: Heiße ThinkPad und IdeaPad Wochenangebote mit großer Auswahl und dicken Rabatten


Weitere Möglichkeiten
» Top bei Otto: Sehr gute HP Notebook Angebote, teils mit Extras wie 4 Jahre Garantie und mehr
» Mehr Aktionen in der Übersicht: Aktuelle HP Angebote und mehr auf einem Blick


Aktuelle Bitdefender Aktionen:
» Bitdefender "Schulstart" Angebot mit bis zu 44% Rabatt
» Bitdefender +1 Jahr dazu-Aktion
» Top für neue PCs! Bitdefender AntiVirus Plus Lebenslang Edition: 5 Jahre Schutz für nur für nur 89,95
Weitere aktuelle Bitdefender Angebote » Alle Bitdefender Angebote auf einem Blick

Werbung


Verwandte Themen:


Sorry! Unser Kommentarfunktion ist vorübergehend geschlossen.