Version 11 (Geändert)
Subtotal (Feldname{; Seitenumbruch}) Numerisch
Parameter | Typ | Beschreibung | |
Feldname | Datenfeld | Feld, über welches die Zwischensumme | |
gebildet wird | |||
Seitenumbruch | Numerisch | Ebene, auf der ein Seitenumbruch erfolgen soll | |
Funktionsergebnis | Numerisch | Zwischensumme von Feldname |
Beschreibung
Die Funktion Subtotal gibt die Zwischensumme des Feldes Feldname für die aktuelle oder die letzte Umbruchebene zurück. Sie kann nur beim Drucken mit dem Befehl PRINT SELECTION oder dem Menü Drucken in der Benutzerumgebung verwendet werden.
Feldname muss ein Feld vom Typ Zahl, Ganzzahl oder Lange Ganzzahl sein. Die errechnete Zwischensumme wird mit Hilfe einer Variablen im Umbruchbereich des Formulars dargestellt.
Warnung: Im kompilierten Modus müssen Sie vor jedem Bericht mit Umbrüchen die Befehle BREAK LEVEL und ACCUMULATE ausführen, da diese die Berechnung im Umbruch aktivieren. Weitere Informationen dazu finden Sie in der nachfolgenden Beschreibung.
Subtotal sollte in der Formularmethode oder einer Objektmethode für das Formular liegen. 4D durchläuft diese Methoden vor dem Drucken; ist Subtotal vorhanden, wird die Berechnung im Umbruch ausgelöst (nur im interpretierten Modus).
Mit dem optionalen Parameter Seitenumbruch rufen Sie Seitenumbrüche während dem Drucken hervor. Ist Seitenumbruch gleich Null (0), erzeugt Subtotal keinen Seitenumbruch. Ist Seitenumbruch gleich 1, erzeugt Subtotal einen Seitenumbruch für jede Umbruchebene 1. Ist Seitenumbruch gleich 2, erzeugt Subtotal einen Seitenumbruch für jede Umbruchebene 1 und 2, usw..
Tipp: Führen Sie Subtotal innerhalb eines Ausgabeformulars auf dem Bildschirm aus, erhalten Sie eine Fehlermeldung, ausgelöst durch eine Endlosschleife von Updates zwischen Formular und Fehlerdialog. Sie können diese Schleife verlassen, wenn Sie unter Windows die Kombination Alt+Umschalttaste, auf Macintosh die Kombination Wahl- + Umschalttaste drücken und im Fehlerdialog gleichzeitig auf die Schaltfläche Abbrechen klicken (evtl. mehrmals). Dies stoppt temporär die Aktualisierung für das Fenster des Formulars. Wählen Sie ein anderes Formular als Ausgabeformular, damit der Fehler nicht erneut auftritt. Gehen Sie zurück in die Designumgebung und isolieren Sie den Aufruf von Subtotal in einem Test Form event=On Printing Break, wenn Sie das Formular sowohl zum Anzeigen als auch zum Ausdrucken verwenden.
Beispiel
Folgendes Beispiel ist eine one-line Objektmethode innerhalb eines Umbruchbereichs eines Formulars. Die Variable vSalary liegt im Umbruchbereich (der Bereich unterhalb der Markierung B0). Ihr wurde die Zwischensumme des Datenfeldes "Salary" zugewiesen:
Case of : (Form event=On Printing Break) vSalary:=Subtotal ([Employees]Salary) End case
Weitere Informationen zum Erstellen von Formularen mit Kopf- und Umbruchbereichen finden Sie im Handbuch 4D Designmodus.
Berechnungen im Umbruchbereich von Formularberichten aktivieren
Sie aktivieren Berechnungen im Umbruchbereich von Formularberichten:
Mit der Funktion Subtotal.
Mit den Befehlen BREAK LEVEL und ACCUMULATE.
Beide Methoden können zum selben Ergebnis führen, haben jedoch unterschiedliche Vorteile.
Die Funktion Subtotal (Nur interpretierter Modus)
Die Funktion Subtotal für Berechnungen im Umbruch muss in der Formularmethode oder einer Objektmethode für eine Variable erscheinen, die in einem Umbruchbereich des Formulars liegt. 4D sucht vor dem Drucken eines Berichts in diesen Methoden nach der Funktion Subtotal.
Findet 4D die Funktion, wird die Berechnung im Umbruch aktiviert. Sie müssen dafür nicht die Funktion Subtotal aufrufen, denn diese könnte zum Beispiel in der Methode eines Objekts unterhalb der Fußzeile liegen und würde so nie gedruckt oder ausgeführt werden.
Setzen Sie die Funktion Subtotal ein, müssen Sie die Datensätze über ein Sortierfeld mehr als die Anzahl der Umbruchebenen sortieren. Verwenden Sie in Ihrem Bericht z.B. zwei Umbruchebenen, müssen Sie über drei Datenfelder sortieren.
Die Befehle BREAK LEVEL und ACCUMULATE
Sie können Berechnungen im Umbruch auch mit BREAK LEVEL and ACCUMULATE hervorrufen. Dazu müssen Sie beide Befehle vor Drucken eines Formularberichts ausführen. Sie müssen nicht nach einer zusätzlichen Ebene sortieren, die Anzahl der Umbruchebenen muss jedoch kleiner oder gleich der Anzahl der Sortierebenen sein. In diesem Schema wird Subtotal zum Anzeigen von Werten in einem Formular benötigt.
Vergleich der beiden Methoden
Subtotal für Berechnungen im Umbruch hat den Vorteil, dass Sie vor Drucken des Berichts keine Methode ausführen müssen. Das ist besonders hilfreich in der Benutzerumgebung.
Folgende Schritte werden ausgeführt:
1. Sie wählen die Datensätze aus, die gedruckt werden sollen.
2. Sie sortieren die Datensätze und planen eine zusätzliche Ebene ein.
3. Sie wählen im Menü Datei/Ablage den Befehl Drucken
4D durchsucht die Formular- und Objektmethoden, findet die Funktion Subtotal, aktiviert die Berechnung im Umbruch und druckt den Bericht.
Subtotal für Berechnungen im Umbruch hat zwei Nachteile:
Sie können damit in kompilierten Datenbanken keine Berechnungen im Umbruch durchführen.
Sie müssen nach einer zusätzlichen Ebene sortieren; das benötigt bei einer großen Menge an Datensätzen mehr Zeit.
BREAK LEVEL und ACCUMULATE bietet sich für Berechnungen im Umbruch an, wenn Sie Formularberichte über Methoden erstellen. Hier werden folgende Schritte ausgeführt:
1. Sie wählen die Datensätze aus, die gedruckt werden sollen.
2. Sie sortieren die Datensätze mit dem Befehl ORDER BY. Die Anzahl der Umbruchebenen muss kleiner oder gleich der Anzahl der Sortierebenen sein.
3. Sie führen die Befehle BREAK LEVEL und ACCUMULATE aus.
4. Sie drucken den Bericht mit dem Befehl PRINT SELECTION.
Im kompilierten Modus müssen Sie die Berechnungen im Umbruch mit BREAK LEVEL und ACCUMULATE aktivieren. Die Funktion Subtotal benötigen Sie außerdem, um Werte in einem Formular anzuzeigen.
Referenz
ACCUMULATE, BREAK LEVEL, Level, PRINT SELECTION.