Freigeben über


Festlegen von temporären Beziehungen zwischen Tabellen

Wenn Sie eine temporäre Beziehung zwischen Tabellen herstellen, bewirken Sie, dass der Datensatzzeiger der Detailtabelle automatisch den Bewegungen des Datensatzzeigers in der Master-Tabelle folgt. Dies ermöglicht es Ihnen, einen Datensatz im Beziehungspartner "1" einer Tabellenbeziehung auszuwählen und auf die verbundenen Datensätze im Beziehungspartner "n" automatisch zuzugreifen.

Beispielsweise möchten Sie auf die Tabellen customer und orders so Bezug nehmen, dass der Datensatzzeiger in der Tabelle orders, wenn Sie den Datensatzzeiger in der Tabelle customer auf einen bestimmten Kunden verschieben, automatisch auf den Datensatz mit derselben Kundennummer verschoben wird.

Sie können Tabellenarbeitsbereiche und Tabellenaliase verwenden, um mit dem SET RELATION-Befehl Beziehungen zwischen zwei geöffneten Tabellen herzustellen. Wenn Sie zum Arbeiten mit Tabellen ein Formular verwenden, können Sie diese Beziehungen als Teil der Datenumgebung für das Formular speichern.

Temporär verknüpfte Tabellen

Sie können temporäre Beziehungen zwischen Tabellen entweder im Datensitzungsfenster oder mit der Sprache erstellen.

So stellen Sie eine temporäre Beziehung zwischen Tabellen her

  • Wählen Sie im Datensitzungsfenster die gewünschten Tabellen aus, und klicken Sie anschließend auf Beziehungen, um Beziehungen zu erstellen.

    - Oder -

  • Verwenden Sie den SET RELATION-Befehl.

Mit dem SET RELATION-Befehl stellen Sie eine Beziehung zwischen einer im ausgewählten Arbeitsbereich geöffneten Tabelle und einer in einem anderen Arbeitsbereich geöffneten Tabelle her. Normalerweise stellen Sie Verbindungen zwischen Tabellen mit gemeinsamen Feldern her. Der Ausdruck, mit dem Sie die Beziehung herstellen, ist in der Regel der Indexausdruck des Hauptindexes der Detailtabelle.

Beispielsweise liegen für einen Kunden viele Bestellungen vor. Wenn Sie zwischen dem Feld, das beiden Tabellen (customer und orders) gemeinsam ist, eine Beziehung erstellen, können Sie mühelos sämtliche Bestellungen für jeden Kunden einsehen. Das folgende Programm verwendet das beiden Tabellen gemeinsame Feld cust_id und erstellt eine Beziehung zwischen den beiden Tabellen basierend auf dem Feld cust_id in der Tabelle customer und dem Indexschlüssel cust_id in der Tabelle orders.

Verwenden von SET RELATION zum Erstellen einer Beziehung zwischen zwei Tabellen

Code Kommentar
USE customer IN 1
Öffnen der Tabelle customer (Master-Tabelle) in Arbeitsbereich 1.
USE orders IN 2
Öffnen der Tabelle orders (Detailtabelle) in Arbeitsbereich 2.
SELECT orders
Auswahl des Arbeitsbereichs in der Detailtabelle.
SET ORDER TO TAG cust_id
Angeben der Tabellenreihenfolge für die Detailtabelle unter Verwendung des Indextags cust_id.
SELECT customer
Auswahl des Arbeitsbereichs in der Master-Tabelle.
SET RELATION TO cust_id
INTO orders
Erstellen der Beziehung zwischen der Master-Tabelle und dem steuernden Index in der Detailtabelle.
SELECT orders
BROWSE NOWAIT
SELECT customer
BROWSE NOWAIT
Öffnen von zwei Datenblattfenstern; beachten Sie, dass sich bei einem Verschieben des Datensatzzeigers in der Master-Tabelle die angezeigten Daten in der Detailtabelle ändern.

Das Datensitzungsfenster zeigt die beiden geöffneten Tabellen, Orders und Customer, sowie die mit dem SET RELATION-Befehl hergestellte Beziehung an.

Das Datensitzungsfenster zeigt die Aliase der geöffneten Tabellen und die temporären Beziehungen an

Sie haben in der Detailtabelle orders einen Index erstellt, um die Datensätze dieser Tabelle entsprechend dem Kunden, der die Bestellung aufgegeben hat, in Gruppen einzuteilen. Wenn Sie eine Beziehung zwischen der Master-Tabelle und dem Index der Detailtabelle erstellen, wählt Visual FoxPro nur diejenigen Datensätze der Detailtabelle aus, deren Indexschlüssel mit dem Indexschlüssel des ausgewählten Master-Datensatzes übereinstimmt.

Im vorstehenden Beispiel wurde eine einzelne Beziehung zwischen zwei Tabellen hergestellt. Sie können den SET RELATION-Befehl ebenfalls verwenden, um mehrere Beziehungen zwischen einer Master- und mehreren Detailtabellen zu erstellen.

Speichern von Tabellenbeziehungen in einer Datenumgebung

Wenn Sie ein Formular erstellen, das mehrere Tabellen verwendet, können Sie Tabellenbeziehungen in der Datenumgebung erstellen und zusammen mit dem Formular speichern. Solche in der Datenumgebung erstellten Beziehungen werden beim Ausführen des Formulars automatisch geöffnet. Informationen zum Erstellen einer Datenumgebung finden Sie in Kapitel 9, Erstellen von Formularen.

Herstellen von Beziehungen zwischen Datensätzen in einer einzelnen Tabelle

Sie können auch eine Beziehung zwischen Datensätzen in einer einzelnen Tabelle erstellen. Diese Beziehung, eine so genannte "auf sich selbst verweisende Beziehung", kann zweckmäßig sein in Situationen, in denen Sie sämtliche benötigten Informationen in einer einzelnen Tabelle gespeichert haben. Beispielsweise möchten Sie die Datensätze für Manager in der Tabelle employee durchblättern, wobei sich die Anzeige der einem Manager jeweils unterstellten Angestellten automatisch ändern soll, während Sie den Datensatzzeiger von Manager zu Manager verschieben.

So stellen Sie eine temporäre Beziehung zwischen Datensätzen in einer einzelnen Tabelle her

  • Wählen Sie im Datensitzungsfenster die gewünschten Tabellen aus, und klicken Sie anschließend auf Beziehungen, um Beziehungen zu erstellen.

    - Oder -

  • Verwenden Sie den SET RELATION-Befehl.

Um eine auf sich selbst verweisende Beziehung zu erstellen, öffnen Sie eine Tabelle zweimal: zuerst in einem Arbeitsbereich und dann mit Hilfe des USE AGAIN-Befehls in einem anderen Arbeitsbereich. Anschließend stellen Sie mit Hilfe eines Indexes eine Beziehung zwischen den Datensätzen her. Beispielsweise stellt der folgende Code eine auf sich selbst verweisende Beziehung her und durchsucht diese, indem er den Indexschlüssel mgr_id erstellt, der die Tabelle employee nach dem Feld reports_to sortiert:

SELECT 0
USE employee ALIAS managers
SELECT 0
USE employee AGAIN ALIAS employees
INDEX ON reports_to TAG mgr_id
SET ORDER TO mgr_id
SELECT managers
SET RELATION TO emp_id INTO employees
BROWSE
SELECT employees
BROWSE

Wenn Sie den Datensatzzeiger im Datenblattfenster der Tabelle managers verschieben, wird das Datenblattfenster der Tabelle employees aktualisiert, um nur die Angestellten, die zu dem ausgewählten Vorgesetzten gehören, anzuzeigen.

Siehe auch

Funktionsweise von Tabellenaliasnamen | Einrichtung persistenter Beziehungen mit Indizes | Arbeiten mit Datensätzen | Datensitzungsfenster | SET RELATION | Funktionsweise mehrerer Tabellen