TurboPL Referenz

sub Kommando

Top  Previous  Next

Syntax

sub [Selektion]
       ..Anweisungen
endsub [Indexdefinition]

Erklärung

Die Anweisungen zwischen sub und endsub werden für alle mit dem aktuellen Datensatz der Primärtabelle verknüpften Datensätze ausgeführt.

Ein Subreport führt, wenn es sich um die Primärtabelle handelt (und keine Verschachtelung vorliegt) zu einer kompletten (eventuell durch einen Filter eingeschränkten) Bearbeitung der Tabelle. Handelt es sich nicht um die Primärtabelle oder um einen verschachtelten Subreport, so werden die zum aktuellen Datensatz gehörenden Sätze der im Subreport angesprochenen Tabellen bearbeitet. Innerhalb des Subreports wird die Primärtabelle vorübergehend auf die dort angesprochene Tabelle (falls es sich um eine handelt) bzw. die letzte bei der Relationsbildung (falls mehrere Tabellen vom Subreport betroffen sind) gesetzt.

Subreports dienen zur Bearbeitung aller an einen Datensatz der Primärdatei gekoppelten Datensätze einer Sekundärdatei.

Beispiel

Tabelle                Felder

------------------------------------------------------------

KUNDEN        Name, Vorname

ARTIKEL        Bezeichnung, Einzelpreis

BESTELL        Bestelldatum, Kunde(L->KUNDEN), Bezahlt

POSTEN        Bestellung(L->BESTELL), Artikel(L->ARTIKEL), Menge

primtableis KUNDEN
..
..In der folgenden Schleife werden alle Einträge der Kunden-Tabelle bearbeitet
sub
       ..Zugriff auf KUNDEN
       ..Primärtabelle KUNDEN
endsub
..
..In dieser Schleife wird für jeden Kunden, die Liste seiner Bestellungen bearbeitet
sub
       ..Zugriff auf KUNDEN
       ..Primärtabelle KUNDEN
       sub
               ..Zugriff auf BESTELL
               ..Primärtabelle BESTELL
       endsub
endsub
..
..Hier wird die Liste aller gültigen Kombinataion aus Kunden und Bestellungen bearbeitet
..(also alle Bestellungen mit zugehörigem Kunden) und dann für jede Bestellung alle zu-
..gehörigen Posten mit den passenden Artikeln
sub
       ..Zugriff auf KUNDEN,BESTELL
       ..Relationsbildung: KUNDEN - BESTELL
       ..Primärtabelle BESTELL
       sub
               ..Zugriff auf ARTIKEL, POSTEN
               ..Relationsbildung: BESTELL - POSTEN - ARTIKEL
               ..Primärtabelle ARTIKEL
       endsub
endsub

Jeder einzelne Subreport kann mit einer eigenen Selektion versehen werden. Diese Selektion wirkt dann nur auf diesen, nicht aber auf darin verschachtelte Subreports. Die in der Selektion angesprochenen Tabellen werden ebenfalls zur Bildung der Relation (Datensatzkombinationen) herangezogen. Von denjenigen Tabellen, die ausschließlich in der Selektion angesprochen werden (und nicht mehr im Innern des Subreports), wird (falls überhaupt ein angekoppelter Satz vorhanden ist), nur eine Kombination gebildet.

Beispiel

primtableis KUNDEN
sub KUNDEN.PLZ von "20000" bis "49999"
       ..Zugriff auf KUNDEN
       ..Es werden nur Kunden aus dem selektierten PLZ-Bereich
       ..zu Verfügung gestellt.
endsub
sub
       ..Zugriff auf Kunden
       ..Alle Kunden werden zur Verfügung gestellt
       sub ARTIKEL.Einzelpeis > 1000
               ..Zugriff auf BESTELL
               ..Es werden diejenigen an KUNDEN gekoppelten Sätze aus
               ..BESTELL zur Verfügung gestellt, denen über POSTEN wenigstens
               ..ein Artikel mit der angegebenen Bedingung zugeordnet werden kann.
               ..Falls mehrere passende Artikel verknüpft sind, wird dennoch
               ..nur eine Bestellung ausgegeben (automatischer Schnitt).
       endsub
endsub

Falls sich ein Subreport auf nur eine Tabelle bezieht, kann eine Sortierung der zu bearbeiteten Datensätze erzwungen werden. Dazu wird das Sortierkriterium in Form einer Indexbeschreibung dem endsub nachgestellt.

Beispiel

Das folgende Programmfragment setzt zunächst einen Filter auf die Tabelle KUNDEN. Innerhalb des Subreports werden daraufhin die Datensätze in der dem Filter entsprechenden Indexreihenfolge erzeugt (hier Land,PLZ). Das nach ENDSUB angegebene Sortierkriterium sorgt dann dafür, dass die dem Subreport zugeführten Datensätze dieser Reihenfolge (Name,Vorname) entsprechen.

primtableis KUNDEN
setaccess LANDPLZ
filter D,20000/D,49999
sub
..Zugriff auf KUNDEN
endsub Name, Vorname

Siehe auch

Sub (Funktion)