Conversion des valeurs de champs

De RAD Studio
Aller à : navigation, rechercher

Remonter à Affichage, conversion et accès aux valeurs des champs


Le rôle de ces propriétés est de convertir un type de données en un autre. Par exemple, la propriété AsString convertit les valeurs numériques et booléennes en représentations chaîne. Le tableau suivant donne la liste des propriétés de conversion des composants champ et indique celles conseillées en fonction de leur classe :

Composants champ AsVariant AsString AsInteger AsFloat, AsCurrency, AsBCD AsDateTime, AsSQLTimeStamp AsBoolean

TStringField

oui

ND

oui

oui

oui

oui

TWideStringField

oui

oui

oui

oui

oui

oui

TIntegerField

oui

oui

ND

oui

TSmallIntField

oui

oui

oui

oui

TWordField

oui

oui

oui

oui

TLargeintField

oui

oui

oui

oui

TFloatField

oui

oui

oui

oui

TCurrencyField

oui

oui

oui

oui

TBCDField

oui

oui

oui

oui

TFMTBCDField

oui

oui

oui

oui

TDateTimeField

oui

oui

oui

oui

TDateField

oui

oui

oui

oui

TTimeField

oui

oui

oui

oui

TSQLTimeStampField

oui

oui

oui

oui

TBooleanField

oui

oui

TBytesField

oui

oui

TVarBytesField

oui

oui

TBlobField

oui

oui

TMemoField

oui

oui

TGraphicField

oui

oui

TVariantField

ND

oui

oui

oui

oui

oui

TAggregateField

oui

oui


Vous remarquerez que certaines colonnes du tableau font référence à plusieurs propriétés de conversion (telles que AsFloat, AsCurrency et AsBCD). En effet, tous les types de données de champ qui prennent en charge l'une de ces propriétés prennent également en charge les autres.

Vous remarquerez également que la propriété AsVariant peut traduire tous les types de données. Pour tout type de données ne figurant pas dans la liste ci-dessus, AsVariant est également disponible (et constitue, de fait, la seule option). Utilisez AsVariant en cas de doute.

Il est des cas où la conversion n'est pas possible. Par exemple, AsDateTime permet de convertir une chaîne au format date, heure ou date/heure seulement si la valeur de la chaîne est dans un format date/heure identifiable. L'échec d'une tentative de conversion a pour effet de provoquer une exception.

Dans certains autres cas, la conversion est possible, mais les résultats sont parfois imprévisibles. Par exemple, que signifie la conversion d'une valeur Data.DB.TDateTimeField au format flottant ? AsFloat convertit la partie date du champ en nombre de jours à partir du 31/12/1899 et la partie heure du champ en une fraction de 24 heures. Le tableau suivant donne la liste des conversions autorisées qui donnent des résultats spéciaux :

Résultats de conversion spéciaux :

Conversion Résultat

De String à Boolean

Convertit "True", "False", "Yes" et "No" en valeur booléenne. Les autres valeurs provoquent une exception.

De Float à Integer

Arrondit la valeur à virgule flottante à l'entier le plus proche.

De DateTime ou SQLTimeStamp à Float

Convertit la date en nombre de jours à partir du 31 décembre 1899 et l'heure en fraction de 24 heures.

De Boolean à String

Convertit toute valeur booléenne en "True" ou "False".


Dans les autres cas, la conversion est totalement impossible. Dans ces cas, toute tentative de conversion déclenche également une exception.

La conversion a toujours lieu avant l'assignation. Par exemple, l'instruction ci-dessous convertit la valeur de CustomersCustNo en chaîne et assigne celle-ci au texte d'un contrôle de saisie :

Edit1.Text := CustomersCustNo.AsString;
Edit1->Text = CustomersCustNo->AsString;

A l'inverse, l'instruction suivante assigne le texte d'un contrôle de saisie au champ CustomersCustNo en tant qu'entier :

MyTableMyField.AsInteger := StrToInt(Edit1.Text);
MyTableMyField->AsInteger = StrToInt(Edit1->Text);

Voir aussi