TurboPL Referenz

LoopRecs Prozedur

Top  Previous  Next

Syntax

LoopRecs(Suchbedingung)

oder

Link(Suchbedingung)

Kategorie

Datenbank-Befehl

Erklärung

Liefert 1, wenn die Suchbedingung erfüllbar ist, andernfalls 0. Um die Erfüllbarkeit zu prüfen, werden alle mit dem aktuellen Satz der Primärtabelle verknüpften Sätze der in der Selektion angesprochen Tabellen gelesen. Zusätzlich werden die statistischen Funktionen aktualisiert. Falls die Selektion die Primärtabelle betrifft, wird diese komplett gelesen.

LoopRecs ist eine Alternative zu Sub/EndSub oder einer Schleife mit FirstRec/NextRec. Im Vergleich zu diesen ist LoopRecs erheblich kompakter, weil man die ganze Schleife in einer einzigen Zeile schreiben kann und wird auch deutlich schneller ausgeführt. Dafür bietet LoopRecs nicht so viele Möglichkeiten wie die anderen genannten Alternativen.

Anmerkung

Da in Suchbedingungen der Operator and auch durch ein Komma ausgedrückt werden kann, werden mehrstufige Suchbedingungen häufig so geschrieben:

LoopRecs(KUNDEN, Name = 'Müller', SetMark(KUNDEN, RecNo(KUNDEN)));

um beispielsweise alle verknüpften Datensätze in der KUNDEN-Tabelle zur markieren.

Beispiel

(Primärtabelle ist KFZ):

LoopRecs(KUNDEN.Name = "Müller") * COUNT(KUNDEN)

liefert die Anzahl der Kunden namens "Müller" des aktuellen Autos.

LoopRecs(KFZ) * MEAN(KFZ.Katalysator) * 100

liefert den prozentualen Anteil der KFZ mit Katalysator.

Die Funktion kann auch dazu verwendet werden, um nur eine Untermenge der Datensätze der aktuellen Primärdatei anzuzeigen:

OpenForm("KUNDEN.Kunden_FORMULAR");
LoopRecs(Name wie "A*" and SetMark(KUNDEN, RecNo(KUNDEN)));
Access(KUNDEN, "Markierung");
Attach;
ShowRec(-1);
ViewRecs("Alle Kunden deren Namen mit 'A' beginnen");
CloseWnd;

Ein weiterer wichtiger Anwendungsfall ist das Markieren angekoppelter Datenssätze. Primärtabelle ist wiederum KFZ, angezeigt werden alle Kunden, die mit dem ausgewählten Auto verknüpft sind:

vardef Rec: Integer;
DatensätzeBearbeiten("KFZ.Formular_KFZ")
Rec := DatensatzAuswählen("Selektieren Sie ein Fahrzeug")
if Rec > 0
       DatensätzeBearbeiten("KUNDEN.Formular_KUNDEN")
       PrimFile(KFZ)
       ReadRec(KFZ, Rec)
       LoopRecs(KUNDEN and SetMark(KUNDEN, RecNo(KUNDEN)))
       Access(KUNDEN, "Markierung")
       Attach
end

Siehe auch

Access, Attach, Exists, CountRecs, SumRecs, ShowRec, Statistik-Funktionen, ViewRecs