Referenzfelder

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Felder - Index

Referenzfelder enthalten einen Zeiger oder eine Referenz auf ein anderes ADT-Objekt. Das ADT-Objekt ist ein Datensatz in einer anderen Objekttabelle. Referenzfelder nehmen immer auf einen einzelnen Datensatz in einer Datenmenge (Objekttabelle) Bezug. Die Daten im referenzierten Objekt werden in einer verschachtelten Datenmenge zurückgegeben. Sie können aber auch über die Eigenschaft Fields von TReferenceField auf die Daten zugreifen.

Referenzfelder anzeigen

In einem Vcl.DBGrids.TDBGrid-Steuerelement erkennen Sie ein Referenzfeld in den einzelnen Zellen der Datenmengenspalte am Kürzel (Reference). Zur Laufzeit wird rechts neben dem Referenzfeld eine Ellipsen-Schaltfläche angezeigt. Wenn der Benutzer auf diese Schaltfläche klickt, wird ein neues Formular eingeblendet, das in einem Gitter das Objekt für das Referenzfeld des aktuellen Datensatzes enthält.

Dieses Formular kann auch programmseitig mit der Methode ShowPopupEditor des Datengitters eingeblendet werden. Wenn z.B. die siebte Spalte im Gitter ein Referenzfeld repräsentiert, zeigt die folgende Anweisung das Objekt für das Feld des aktuellen Datensatzes an:



 DBGrid1.ShowPopupEditor(DBGrid1.Columns[7]);



 DBGrid1->ShowPopupEditor(DBGrid1->Columns->Items[7], -1, -1);



Auf Daten in einem Referenzfeld zugreifen

Sie greifen auf die Daten in einem Referenzfeld auf die gleiche Weise wie auf die Daten einer verschachtelten Datenmenge zu.

So greifen Sie auf Daten in einem Referenzfeld zu:

  1. Erstellen Sie zunächst ein persistentes Data.DB.TDataSetField-Objekt, indem Sie den Felder-Editor für die übergeordnete Datenmenge aufrufen.
  2. Definieren Sie eine Datenmenge, um die in dem Datenmengenfeld enthaltenen Werte zu repräsentieren.
  3. Weisen Sie der Eigenschaft DataSetField der Datenmenge, die Sie in Schritt 2 erstellt haben, das persistente Datenfeld zu, das in Schritt 1 erstellt wurde.

Wenn die Referenz zugewiesen wird, enthält sie einen einzelnen Datensatz mit den referenzierten Daten. Ist die Referenz Null, dann ist die Referenzdatenmenge leer.

Sie können auch mithilfe der Eigenschaft Fields eines Referenzfeldes auf dessen Werte zugreifen. Die folgenden Anweisungszeilen sind gleichbedeutend und weisen einem Eingabefeld namens CityEdit Daten aus dem Referenzfeld CustomerRefCity zu:



 CityEdit.Text := CustomerRefCity.Fields[1].AsString;
 CityEdit.Text := CustomerRefCity.NestedDataSet.Fields[1].AsString;



 CityEdit->Text = CustomerADDRESS_REF->NestedDataSet->Fields->Fields[1]->AsString;



Bei der Bearbeitung von Daten in einem Referenzfeld werden die referenzierten Daten modifiziert.

Für die Zuweisung eines Referenzfeldes benutzen Sie zuerst eine SELECT-Anweisung, um die Referenz aus der Tabelle zu extrahieren, und führen dann die Zuweisung aus. Beispiel:



 var
   AddressQuery: TQuery;
   CustomerAddressRef: TReferenceField;
 begin
   AddressQuery.SQL.Text := 'SELECT REF(A) FROM AddressTable A WHERE A.City = ''San   Francisco''';
   AddressQuery.Open;
   CustomerAddressRef.Assign(AddressQuery.Fields[0]);
 end;



 AddressQuery->SQL->Text = "SELECT REF(A) FROM AddressTable A WHERE A.City = "San Francisco"";
 AddressQuery->Open();
 CustomerAddressRef->Assign(AddressQuery->Fields->Fields[0]);



Siehe auch