Welcome Guest, you are in: Anmelden

CP Wiki

RSS RSS

Navigation



  1. Administration

Suche im wiki
»
Syntax:

function FieldByName(const FieldName: string): TField@@

Beschreibung:

Die Methode FieldByName sucht ein Feld anhand seines Namens.

Mit FieldByName können Sie Informationen zu einem Feld über dessen Namen abrufen. Dieser Name wird im Parameter FieldName übergeben. Die Methode gibt die TField-Komponente des gesuchten Feldes zurück. Ist das angegebene Feld nicht vorhanden, wird eine EDatabaseError-Exception ausgelöst.

FieldName kann der Name eines einfachen Feldes, der qualifizierte Name eines Unterfeldes in einem Objektfeld oder der Name eines Aggregatfeldes sein. Aufgrund dieser Flexibilität ist FieldByName in vielen Situationen besser geeignet als die Eigenschaft Fields oder AggFields.

In einer Anwendung kann direkt auf bestimmte Eigenschaften und Methoden des von FieldByName zurückgegebenen Feldes zugegriffen werden. So kann beispielsweise mit folgender Anweisung ermittelt werden, ob ein bestimmtes Feld ein berechnetes Feld ist:

if Customers.FieldByName('FullName').Calculated then begin MessageDlg(Format('%s is a calculated field. ', 'FullName'), mtInformation, mbOK, 0); if (Customers->FieldByName("FullName")->Calculated) begin Application.ShowMessage("This is a calculated field", "FullName", MB_OK); end; end;

FieldByName ist insbesondere während des Entwurfs hilfreich, wenn Sie keinen Zugriff auf die zugrunde liegende Tabelle haben und deshalb keine persistenten Feldkomponenten verwenden können.

Tipp: Um auf den Wert eines bestimmten Feldes zuzugreifen, rufen Sie anstelle von FieldByName die Standard-Datenmengenmethode FieldValues auf.

Beispiel:

//In diesem Beispiel wird über das Ereignis BeforeInsert eine Datenprüfung implementiert. //Löst die Funktion StrToInt eine Exception aus, wird der Inhalt des Eingabefeldes auf einen gültigen Wert zurückgesetzt, //damit die Zuordnung zum Integerfeld in der Datenmenge erfolgreich durchgeführt werden kann.

procedure TForm1.ClientDataSet1BeforeInsert(DataSet: TDataSet);

begin try //Sicherstellen, dass Eingabefeld in Integer konvertiert werden kann. //Andernfalls wird Exception ausgelöst. StrToInt(Edit1.Text); except Edit1.Text := '0'; end; end;

procedure TForm1.Button1Click(Sender: TObject); begin ClientDataSet1.Insert; ClientDataSet1.FieldByName('QUANTITY').AsInteger := StrToInt(Edit1.Text); ClientDataSet1.Post;

end;

ScrewTurn Wiki version 3.0.1.400. Some of the icons created by FamFamFam.