Tabelle als Detaildatenmenge einer anderen Datenmenge verwenden

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Haupt/Detail-Beziehungen definieren


Die Eigenschaften MasterSource und MasterFields einer Tabellen-Datenmenge können zur Definition einer Eins-zu-Viele-Beziehung zwischen zwei Datenmengen verwendet werden.

Die Eigenschaft MasterSource dient zur Angabe der Datenquelle, aus der die in der Haupttabelle verwendeten Daten stammen. Diese Datenquelle kann mit jedem beliebigen Datenmengentyp verknüpft werden. Wenn z.B. in dieser Eigenschaft die Datenquelle einer Abfrage angegeben wird, kann eine Client-Datenmenge als Detaildatenmenge mit dieser Abfrage so verknüpft werden, dass die Client-Datenmenge die über die Abfrage definierten Ereignisse verfolgt.

Die Datenmenge wird anhand ihres aktuellen Index mit der Haupttabelle verknüpft. Bevor Sie die Felder in der Hauptdatenmenge angeben, die von der Detaildatenmenge verfolgt werden sollen, müssen Sie den Index der Detaildatenmenge angeben, der mit den entsprechenden Feldern beginnt. Dazu können Sie die Eigenschaften IndexName oder IndexFieldNames verwenden.

Sobald Sie den zu verwendenden Index angegeben haben, können Sie über die Eigenschaft MasterFields die Spalte(n) der Hauptdatenmenge angeben, die den Indexfeldern der Detailtabelle entsprechen. Wenn die Verknüpfung anhand von mehreren Spaltennamen erfolgen soll, müssen Sie die Feldnamen durch Semikolons trennen:

Parts.MasterFields := 'OrderNo;ItemNo';
Parts->MasterFields = "OrderNo;ItemNo";

Der Feldverbindungs-Designer hilft Ihnen dabei, sinnvolle Verknüpfungen zwischen zwei Datenmengen zu erstellen. Um den Feldverbindungs-Designer zu starten, doppelklicken Sie im Objektinspektor auf die Eigenschaft MasterFields, nachdem Sie die Eigenschaft MasterSource gesetzt und einen Index zugewiesen haben.

Mit den folgenden Schritten können Sie ein einfaches Formular erstellen, in dem ein Benutzer die Kundendatensätze durchgehen und jeweils alle Bestellungen für den aktuellen Kunden anzeigen kann. Die Tabelle CustomersTable ist dabei die Haupttabelle, die Tabelle OrdersTable die Detailtabelle. In dem Beispiel wird die BDE-Komponente TTable verwendet, es ist aber auch möglich, mit denselben Methoden beliebige andere Tabellen-Datenmengen zu verknüpfen.

Zum Erstellen eines einfachen Formulars führen Sie die folgende Schritte aus:

  1. Platzieren Sie zwei TTable-Komponenten und zwei TDataSource-Komponenten in einem Datenmodul.
  2. Setzen Sie die Eigenschaften der folgenden Komponenten:
Komponente Eigenschaft

Zuerst TTable

DatabaseName: DBDEMOS TableName: CUSTOMER Name: CustomersTable

Dann TTable

DatabaseName: DBDEMOS TableName: ORDERS Name: OrdersTable

Zuerst TDataSource

Name: CustSource DataSet: CustomersTable

Dann TDataSource

Name: OrdersSource DataSet: OrdersTable

  1. Platzieren Sie zwei TDBGrid-Komponenten in einem Formular.
  2. Wählen Sie Datei > Unit verwenden, um festzulegen, dass das Formular das Datenmodul verwenden soll.
  3. Setzen Sie die Eigenschaft DataSource der ersten Gitterkomponente auf CustSource, und die Eigenschaft DataSource der zweiten Gitterkomponente auf OrdersSource.
  4. Setzen Sie die Eigenschaft MasterSource der Tabelle OrdersTable auf CustSource. Damit wird die Tabelle CUSTOMER (Haupttabelle) mit der Tabelle ORDERS (Detailtabelle) verknüpft.
  5. Doppelklicken Sie im Objektinspektor auf das Wertefeld der Eigenschaft MasterFields, um den Feldverbindungs-Designer aufzurufen und die folgenden Eigenschaften zu setzen:
    • Wählen Sie im Feld Verfügbare Indizes den Eintrag CustNo, um die beiden Tabellen über das Feld CustNo zu verknüpfen.
    • Wählen Sie in den beiden Feldlisten Detailfelder und Hauptfelder jeweils den Feldnamen CustNo.
    • Klicken Sie auf die Schaltfläche Hinzufügen, um diese Verknüpfungsbedingung hinzuzufügen. In der Liste Verknüpfte Felder erscheint CustNo -> CustNo.
    • Klicken Sie auf OK, um Ihre Einstellungen zu bestätigen, und verlassen Sie den Feldverbindungs-Designer.
  6. Setzen Sie die Eigenschaft Active der Tabellen CustomersTable und OrdersTable jeweils auf True, damit die Daten in den Gitterkomponenten des Formulars angezeigt werden.
  7. Compilieren Sie die Anwendung, und führen Sie sie aus.

Dabei können Sie sehen, dass die Tabellen miteinander verknüpft sind. Wenn Sie in der Tabelle CUSTOMER einen anderen Datensatz aktivieren, sehen Sie in der Tabelle ORDERS nur die Datensätze für den betreffenden Kunden.

Siehe auch