Feldwerte konvertieren
Nach oben zu Felder - Index
Die Konvertierungseigenschaften wandeln einen Datentyp in einen anderen um. So konvertiert beispielsweise die Eigenschaft AsString numerische und Boolesche Werte in entsprechende Strings. In der folgenden Tabelle sind die verschiedenen Konvertierungseigenschaften von Feldkomponenten aufgeführt. Sie können ihr auch entnehmen, welche Eigenschaften für welchen Typ verwendet werden können: Konvertierungsfunktionen für Feldkomponenten
Feldkomponenten | AsVariant | AsString | AsInteger | AsFloat, AsCurrency, AsBCD | AsDateTime, AsSQLTimeStamp | AsBoolean |
---|---|---|---|---|---|---|
TStringField |
Ja |
NA |
Ja |
Ja |
Ja |
Ja |
TWideStringField |
Ja |
Ja |
Ja |
Ja |
Ja |
Ja |
TIntegerField |
Ja |
Ja |
NA |
Ja |
||
TSmallIntField |
Ja |
Ja |
Ja |
Ja |
||
TWordField |
Ja |
Ja |
Ja |
Ja |
||
TLargeintField |
Ja |
Ja |
Ja |
Ja |
||
TFloatField |
Ja |
Ja |
Ja |
Ja |
||
TCurrencyField |
Ja |
Ja |
Ja |
Ja |
||
TBCDField |
Ja |
Ja |
Ja |
Ja |
||
TFMTBCDField |
Ja |
Ja |
Ja |
Ja |
||
TDateTimeField |
Ja |
Ja |
Ja |
Ja |
||
TDateField |
Ja |
Ja |
Ja |
Ja |
||
TTimeField |
Ja |
Ja |
Ja |
Ja |
||
TSQLTimeStampField |
Ja |
Ja |
Ja |
Ja |
||
TBooleanField |
Ja |
Ja |
||||
TBytesField |
Ja |
Ja |
||||
TVarBytesField |
Ja |
Ja |
||||
TBlobField |
Ja |
Ja |
||||
TMemoField |
Ja |
Ja |
||||
TGraphicField |
Ja |
Ja |
||||
TVariantField |
NA |
Ja |
Ja |
Ja |
Ja |
Ja |
TAggregateField |
Ja |
Ja |
Beachten Sie, dass sich einige Tabellenspalten auf mehrere Konvertierungseigenschaften beziehen (z.B. AsFloat, AsCurrency und AsBCD), weil alle Felddatentypen, die eine dieser Eigenschaften unterstützen, stets auch die anderen unterstützen.
Beachten Sie außerdem, dass die Methode AsVariant für die Konvertierung zwischen allen Datentypen benutzt werden kann. Auch bei allen Datentypen, die oben nicht aufgeführt sind, ist AsVariant (als einzige Option) verfügbar. Verwenden Sie im Zweifelsfall einfach AsVariant.
In bestimmten Fällen sind Konvertierungen nicht möglich. So kann mit AsDateTime beispielsweise ein String nur dann in einen Wert des Typs Date, Time oder DateTime konvertiert werden, wenn er ein erkennbares Datums-/Zeitformat enthält. Ein fehlgeschlagener Konvertierungsversuch führt zu einer Exception.
Manchmal ist die Konvertierung möglich, aber das Ergebnis nicht aussagekräftig. Was geschieht beispielsweise, wenn ein Data.DB.TDateTimeField-Wert in ein Gleitkommaformat konvertiert wird? AsFloat konvertiert den Datumsteil des Feldes in die Anzahl der Tage seit dem 31.12.1899 und den Zeitanteil des Feldes in einen Bruchteil von 24 Stunden. In der folgenden Tabelle sind die zulässigen Konvertierungen aufgeführt, die zu speziellen Ergebnissen führen:
Spezielle Konvertierungsergebnisse :
Konvertierung | Ergebnis |
---|---|
String zu Boolean |
Konvertiert die Strings "Wahr", "Falsch", "Ja" und "Nein" in einen Booleschen Wert. Andere Werte lösen eine Exception aus. |
Float zu Integer |
Rundet einen Gleitkommawert auf den nächsten Integer-Wert. |
DateTime oder SQLTimeStamp zu Float |
Konvertiert einen Datumswert in die Anzahl der Tage seit dem 31.12.1899 und die Zeit in einen Bruchteil von 24 Stunden. |
Boolean zu String |
Konvertiert einen beliebigen Booleschen Wert in den String "True" oder "False". |
In bestimmten Fällen sind Konvertierungen nicht möglich, und jeder Versuch führt zu einer Exception.
Die Konvertierung wird immer vor der Zuweisung durchgeführt. Die folgende Anweisung konvertiert beispielsweise den Wert von CustomersCustNo in einen String und weist diesen einem Eingabefeld zu:
Edit1.Text := CustomersCustNo.AsString;
Edit1->Text = CustomersCustNo->AsString;
Umgekehrt weist die folgende Anweisung den Text eines Eingabefeldes dem Feld CustomersCustNo als Integer zu:
MyTableMyField.AsInteger := StrToInt(Edit1.Text);
MyTableMyField->AsInteger = StrToInt(Edit1->Text);