TurboPL Referenz

RelIndex Prozedur

Top  Previous  Next

Syntax

RelIndex(RelTable, IndexNo: Integer)

Kategorie

Datenbank-Befehl

Erklärung

Mit dieser Funktion wird ein Index einer Relationstabelle (Dateikennung REL) für den schnellen Zugriff mittels MarkRel vorbereitet. Übergeben wird die Relationstabelle und die Nummer des Indexdatei: 1 für IN1 sowie 2 für IN2. Damit ermöglicht der Aufruf mit 1 das Markieren in der Eltern-Tabelle (also der Tabelle, auf die das Relationsfeld zeigt), während der Aufruf mit 2 das Markieren in der Kind-Tabelle (Tabelle mit dem Relationsfeld) erlaubt.

Hintergrund und Warnung

Normalerweise enthalten die Indexe in1 und in2 einer Relationstabelle eine Sortierung der Datensätze der Relationstabelle nach den Auto-Nummern der angekoppelten Datensätze. in1 bezieht sich dabei auf die Kind-Tabelle und in2 auf die Eltern-Tabelle. Durch die Funktion RelIndex werden zusätzlich die physikalischen Satznummern der jeweils anderen Tabelle in den Index eingetragen. Also die Satznummern der Eltern-Tabelle in den in1 und die Satznummern der Kind-Tabelle in den in2. Auf diese Weise kann MarkRel die über das Relationsfeld verknüpften Datensätze finden, ohne die Relationstabelle lesen zu müssen. Deshalb ist es bei sehr vielen Datensätzen in der Relationstabelle erheblich schneller.

Die von RelIndex eingefügten Informationen können jedoch nicht automatisch gewartet werden. Der Einsatz von RelIndex und MarkRel ist also in erster Linie für statische Daten interessant. Für andere Zwecke wird der Standard-Weg über LoopRecs/Link in Verbindung mit SetMark empfohlen.

Beispiel

Die Tabelle LITERATUR verfügt über ein Relationsfeld Stichwort, das die Verknüpfung zur Tabelle INDEX herstellt. Ein Datenfenster der Tabelle LITERATUR ist geöffnet. Das folgende Beispiel markiert alle Stichwörter zum aktuellen Literaturhinweis und zeigt sie in einem Formular an.

vardef Marks: Integer[0]
MarkRel(LITERATUR, STICHWORT)
if NMarks(INDEX) > 0
       GetMarks(INDEX, Marks)
       OpenForm('INDEX.Formular_INDEX')
       PutMarks(INDEX, Marks)
       Attach
else
       Message("Zum aktuellen Eintrag sind keine Stichwörter vorhanden"
end
 

Damit dies funktioniert muss zuvor einmalig die Relationstabelle mit dem folgenden Aufruf vorbereitet werden:

RelIndex(STICHWORT, 1)

Die Vorbereitung in der anderen Richtung ist nötig, wenn man mit MarkRel zu einem Stichwort in der Tabelle Index alle passenden Literaturstellen finden möchte:

RelIndex(STICHWORT, 2)

Siehe auch

MarkRel