Data.Win.ADODB.TCustomADODataSet.EnableBCD
Delphi
property EnableBCD: Boolean read FEnableBCD write FEnableBCD default True;
C++
__property bool EnableBCD = {read=FEnableBCD, write=FEnableBCD, default=1};
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
property | public | Data.Win.ADODB.pas Data.Win.ADODB.hpp |
Data.Win.ADODB | TCustomADODataSet |
Description
Spécifie si les champs numériques sont traités comme des valeurs à virgule flottante ou des valeurs BCD.
Utilisez la propriété EnableBCD pour spécifier comment les champs sont mappés sur les classes de champs. Si EnableBCD a la valeur true (la valeur par défaut) les champs adDecimal et adNumeric sont mappés sur la classe TBCDField quand les objets champ sont créés. Si EnableBCD a la valeur false, les champs sont mappés sur la classe TFloatField.
EnableBCD détermine si les champs numériques et décimaux sont convertis en valeurs à virgule flottante ou en valeurs décimales codées binaire (BCD). Les valeurs BCD éliminent les erreurs d'arrondi associées à l'arithmétique à virgule flottante (du type 3 * (2/3) donnant 2,00000000001).
Si des objets champ persistant sont utilisés (comme ceux créés en employant l'éditeur de champs), la classe de champ associée à un champ donné peut contredire la valeur de EnableBCD. Ainsi, trois champs numériques de la même table peuvent, par exemple, être représentés, respectivement, par un TFloatField, un TBCDField et un TVariantField indépendamment de la valeur de EnableBCD. Pour une plus grande flexibilité, sélectionnez champ par champ la classe de champ à utiliser.
Remarque : Pour les valeurs numériques ayant plus de quatre chiffres à droite de la virgule, il est généralement préférable d'utiliser TFloatField. En effet, TBCDField emploie le type de données monétaire qui utilise quatre chiffres fixes après la virgule.
Remarque : Pour les champs contenant de très grands nombres ayant plus de 19 chiffres significatifs, vous pouvez utilisez les objets champ persistant TVariantField. Les classes TFloatField et TBCDField n'ont pas une capacité suffisante pour des champs de cette taille. TVariantField permet la lecture et l'écriture de données de champ sous forme de chaîne ce qui évite la perte de données due à une capacité insuffisante. Par contre, il n'est pas possible d'effectuer des opérations arithmétiques sur des nombres manipulés via un objet TVariantField.