ADT-Felder

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Felder - Index

ADT-Felder sind benutzerdefinierte Typen, die auf dem Server erstellt wurden. Sie sind in etwa mit dem Datensatztyp vergleichbar. ADT-Felder können die meisten skalaren Feldtypen, Array-Felder, Referenzfelder und verschachtelte ADT-Felder enthalten.

Es gibt verschiedene Möglichkeiten, auf die Daten von ADT-Feldern zuzugreifen. Diese werden im folgenden Beispiel veranschaulicht, in dem einem Eingabefeld mit dem Namen CityEdit der Wert eines untergeordneten Feldes zugewiesen wird. Die verwendete ADT-Struktur sieht folgendermaßen aus:

Address
  Street
  City
  State
  Zip

Persistente Feldkomponenten verwenden

Mithilfe persistenter Feldkomponenten kann am einfachsten auf ADT-Felder zugegriffen werden. Für die oben dargestellte ADT-Struktur können mit dem Felder-Editor die folgenden persistenten Felder der Tabelle Customer hinzugefügt werden:

CustomerAddress: TADTField;
CustomerAddrStreet: TStringField;
CustomerAddrCity: TStringField;
CustomerAddrState: TStringField;
CustomerAddrZip: TStringField;

Nachdem diese persistenten Felder definiert wurden, kann auf die untergeordneten Felder des ADT-Feldes einfach über den Namen zugegriffen werden:



 CityEdit.Text := CustomerAddrCity.AsString;



 CityEdit->Text = CustomerAddrCity->AsString;



Persistente Felder stellen zwar die einfachste Möglichkeit des Zugriffs auf untergeordnete ADT-Felder dar, sie können aber nur eingesetzt werden, wenn die Struktur der Datenmenge zur Entwurfszeit bekannt ist. Soll der Zugriff auf untergeordnete ADT-Felder ohne persistente Felder erfolgen, müssen Sie der Eigenschaft ObjectView der Datenmenge den Wert True zuweisen.

Die Datenmengenmethode FieldByName verwenden

Sie können auch mithilfe der Methode FieldByName der Datenmenge auf die untergeordneten Felder eines ADT-Feldes zugreifen, indem Sie im Aufruf dieser Methode den Namen des ADT-Feldes zusammen mit dem Namen des gewünschten untergeordneten Feldes angeben:



 CityEdit.Text := Customer.FieldByName('Address.City').AsString;



Die Datenmengeneigenschaft FieldValues verwenden

Über die Angabe qualifizierter Feldnamen kann zudem mit der Eigenschaft FieldValues der Datenmenge auf die Werte von ADT-Feldern zugegriffen werden:



 CityEdit.Text := Customer['Address.City'];



 CityEdit->Text = Customer->FieldValues["Address.City"];



Beachten Sie, dass Sie den Namen der Eigenschaft (FieldValues) nicht anzugeben brauchen, da FieldValues die Standardeigenschaft von Datenmengen ist.

Anmerkung:  Im Gegensatz zu anderen Methoden, zur Laufzeit auf die Werte untergeordneter ADT-Felder zuzugreifen, ist der Zugriff über die Eigenschaft FieldValues auch dann möglich, wenn die Eigenschaft ObjectView der Datenmenge den Wert False hat.

Die Eigenschaft FieldValues des ADT-Feldes verwenden

Der Zugriff auf den Wert eines untergeordneten Feldes kann über die Eigenschaft FieldValues der TADTFields-Komponente erfolgen. FieldValues nimmt eine Variante entgegen und gibt eine solche auch zurück. Das bedeutet, dass Felder eines beliebigen Typs konvertiert und verarbeitet werden können. Im Parameter Index wird ein Wert übergeben, der den Offset des Feldes angibt. Beispiel:



 CityEdit.Text := TADTField(Customer.FieldByName('Address')).FieldValues[1];



 Zum Beispiel: CityEdit->Text = ((TADTField*)Customer->FieldByName("Address"))->FieldValues[1];



Da FieldValues die Standardeigenschaft von TADTField-Komponenten ist, kann der Eigenschaftenname (FieldValues) weggelassen werden. Die folgende Anweisung ist daher mit der obigen gleichbedeutend:



 CityEdit.Text := TADTField(Customer.FieldByName('Address'))[1];



Die Eigenschaft Fields des ADT-Feldes verwenden

Jedes ADT-Feld verfügt über die Eigenschaft Fields, die der gleichnamigen Eigenschaft von Datenmengen entspricht. Sie können sie wie die Eigenschaft Fields von Datenmengen verwenden, um über die Indexposition auf untergeordnete Felder zuzugreifen:



 CityEdit.Text := TADTField(Customer.FieldByName('Address')).Fields[1].AsString;



 CityEdit->Text = ((TADTField*)Customer->FieldByName("Address"))->Fields->



Die Eigenschaft Fields erlaubt auch den Zugriff über den Namen:



 CityEdit.Text := TADTField(Customer.FieldByName('Address')).Fields.FieldByName('City').AsString;



 CityEdit->Text = ((TADTField*)Customer->FieldByName("Address"))->



 CityEdit->Text = Customer->FieldByName("Address.City")->AsString;



Siehe auch