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 |
---|---|
|
Öffnen der Tabelle customer (Master-Tabelle) in Arbeitsbereich 1. |
|
Öffnen der Tabelle orders (Detailtabelle) in Arbeitsbereich 2. |
|
Auswahl des Arbeitsbereichs in der Detailtabelle. |
|
Angeben der Tabellenreihenfolge für die Detailtabelle unter Verwendung des Indextags cust_id . |
|
Auswahl des Arbeitsbereichs in der Master-Tabelle. |
|
Erstellen der Beziehung zwischen der Master-Tabelle und dem steuernden Index in der Detailtabelle. |
|
Ö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