Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !
Voir l'indexBonjour folle jeunesse,
Ayant du me pencher sur une erreur liée au format FixedDecimal j'ai réalisé qu'il n'était pas forcément intuitif. Voici donc un rapide résumé.
Le voici, visualisé dans l'objet Select.
Il a l'air tout simple avec ses 2 chiffres.
Spontanément on pense ici à 6 caractères en tout et 2 décimales. Facile quoi.
Et bien en fait pas exactement, c'est plus compliqué et cela peut générer des alertes inatendues.
Prenons l’exemple du format 6 :2
Attention, dans les 6 sont aussi comptés le séparateur (. ou ,) et le signe négatif le cas échéant ce qui génère des variations de 1 à 2 par rapport au format.
Tout nombre dont le format cible dépasserai ce nombre total de 6 caractères sort en erreur et affiche « NULL » en sortie associé à une erreur de type :
Le comptage n'est pas forcément intuitif. En effet, le 6 affiché concerne le format CIBLE (6:2) et pas le format d'entrée.
Dans cet exemple, on a déjà 2 caractères décimaux imposés + 1 séparateur = 3 caractères. Cela signifie qu'il ne peut y avoir dans ce format que maximum 3 entiers dans la données d’entrée.
Si cela était un chiffre négatif, on ne pourrait plus avoir que 2 entiers (2 caractères décimaux + 1 séparateur + 1 signe négatif déjà imposés en format cible = 4).
Tous le monde suit ?
Bon OK, hop, un petit exemple pour valider que ceux du fond de la classe ont bien compris.
Exemple pour le format 6 :2
J'ai placé ces exemples dans le workflow joint.
En complément, voici les 2 erreurs qui revienent souvent.
1. Lorsque la somme des caractères est supérieure au nombre total de caractères:
Ici c'est normal car on a 7 caractères au lieu des 6 max. Il suffit juste d'adapter le format pour résoudre l'erreur.
2. lorsque le séparateur de décimale est distinct de celui de votre poste (point vs virgule) et qu'il ne reconnais le champs comme un numérique.
Il suffit alors de remplacer le séparateur non reconnu par son homologue. Cf workflow exemple.
Donc en conclusion, si vous n'avez pas de contrainte de volumétrie, prennez de la marge pour définir vos FixedDecimal.
Et voila, on va tous pouvoir frimer à la machine à café maintenant.
Bonne fin de journée.
Merci @StephaneP ! En plus de nous donner de très bons conseils, tu nous fais rire !