Freigeben über


SET SKIP-Befehl

Erzeugt eine 1:n-Beziehung zwischen Tabellen.

SET SKIP TO [TableAlias1 [, TableAlias2] ...]

Parameter

  • TO TableAlias1 [, TableAlias2] ...
    Gibt die Alias mehrerer Detailtabellen an. Diese werden verwendet, um eine 1:n-Beziehung mit einer Master-Tabelle zu erstellen. Trennen Sie die einzelnen Alias durch Kommas. Bei Befehlen, die einen Gültigkeitsbereich unterstützen (DISPLAY, LIST usw.), werden die Datensätze der Master-Tabelle für jeden zugehörigen Datensatz der Detailtabelle wiederholt.

    Mit SET SKIP TO ohne weitere Argumente können Sie die 1:n-Beziehung der Master-Tabelle, die im aktuell ausgewählten Arbeitsbereich geöffnet ist, aufheben. Alle 1:1-Beziehungen bleiben wirksam. Diese können mit SET RELATION TO aufgehoben werden.

Hinweise

Mit SET RELATION können Sie Beziehungen zwischen Tabellen herstellen, die in verschiedenen Arbeitsbereichen geöffnet sind. Beim Bewegen des Datensatzzeigers der Master-Tabelle wird der Datensatzzeiger der Detailtabelle auf dem ersten zugehörigen Datensatz positioniert. Der relationale Ausdruck in SET RELATION bestimmt, auf welchen Datensatz der Zeiger in der Detailtabelle bewegt wird. Eine 1:1-Beziehung wird erstellt; für jeden Datensatz in der Master-Tabelle wird der Datensatzzeiger auf den ersten übereinstimmenden Datensatz in der Detailtabelle bewegt. Wird in der Detailtabelle kein übereinstimmender Datensatz gefunden, wird der Datensatzzeiger der Detailtabelle an das Tabellenende gesetzt.

Häufig enthält eine Detailtabelle mehrere Datensätze, die einem Datensatz der Master-Tabelle entsprechen. Mit SET SKIP können Sie eine 1:n-Beziehung zwischen einem Datensatz der Master-Tabelle und mehreren Datensätzen der Detailtabelle herstellen. Wenn Sie die Master-Tabelle durchlaufen, bleibt der Datensatzzeiger so lange bei dem gleichen Datensatz, bis der Datensatzzeiger der Detailtabelle über alle verknüpften Datensätze bewegt wurde.

Um eine 1:n-Beziehung herzustellen, erstellen Sie zunächst mit SET RELATION die Beziehung zwischen der Master-Tabelle und der Detailtabelle. Geben Sie dann SET SKIP ein, um eine 1:n-Beziehung zu erstellen.

Beispiel

Das erste Beispiel unten findet alle Vorkommen in drei Tabellen, in denen jedes Element im ersten Feld dasselbe ist. Dies erfolgt durch Scannen der ersten Tabelle, die eine Beziehung zu einer zweiten hat, die wiederum eine Beziehung zu einer dritten hat. Die erste Tabelle führt dann SET SKIP für die anderen beiden Tabellen durch. SET SKIP hat keine Auswirkung auf die zweite Tabelle. Es beeinflusst nur die Tabelle, die gerade gescannt (ersetzt usw.) wird. In diesem Beispiel werden acht Übereinstimmungen gefunden.

CLOSE DATABASES
* Creates parent table with values a and b in Name field
CREATE TABLE Parent FREE (Name C(1), Val C(10))
INSERT INTO Parent VALUES ('a', 'Parent.a1')
INSERT INTO Parent VALUES ('b', 'Parent.b1')

SELECT 0     && Child1 will have two a's and two b's
CREATE TABLE Child1 FREE (Name1 C(1), Val C(10))
INSERT INTO Child1 VALUES ('a', 'Child1.a1')
INSERT INTO Child1 VALUES ('b', 'Child1.b1')
INSERT INTO Child1 VALUES ('b', 'Child1.b2')
INSERT INTO Child1 VALUES ('a', 'Child1.a2')
INDEX ON Name1 TAG tagName   && The tag name is irrelevant

SELECT 0  && Child2 will have two a's and two b's
CREATE TABLE Child2 FREE (Name2 C(1), Val C(10))
INSERT INTO Child2 VALUES ('b', 'Child1.b1')
INSERT INTO Child2 VALUES ('b', 'Child1.b2')
INSERT INTO Child2 VALUES ('a', 'Child1.a1')
INSERT INTO Child2 VALUES ('a', 'Child1.a2')
INDEX ON Name2 TAG tagName     && The tag name is irrelevant

SELECT Child1
SET RELATION TO Name1 INTO Child2
SELECT Parent
SET RELATION TO Name INTO Child1
SET SKIP TO Child1, Child2 && Parent gets both skips.
           && Otherwise, only four record triplets 
           && would be listed.
SCAN ALL  && There will be eight triplets: four a's and four b's
   ? Parent.Val, Child1.Val, Child2.Val
ENDSCAN

Siehe auch

RELATION( ) | SET RELATION | SKIP