Obtenir des champs numériques de taille fixe (Astuce n°2)

Il est parfois nécessaire d'avoir des champs numériques de taille fixe, par exemple un numéro de département sur deux chiffres ou un code postal sur cinq chiffres, notamment pour pouvoir utiliser les cartes dans Diver ou DivePort.

Une première astuce permettant de rajouter des zéros devant les nombres afin d'avoir un champ avec des valeurs de taille fixe avait déjà été présentée ici.

Voici une deuxième astuce basée sur le même principe mais utilisant une fonction différente dans Visual Integrator.

Supposons que nous avons un champ appelé Dpt provenant de la source ODBC ou du fichier texte qui alimente le Visual Integrator. Dans ce champ, désignant le numéro de département, les valeurs possibles sont 1,2,3,4,5,6,7,8,9,10,11,12,12,...,99.

Nous souhaitons obtenir un champ contenant des numéros de département sur deux chiffres et dont les valeurs possibles sont 01,02,03,04,05,06,07,08,09,10,11,12,...,99.

Pour cela, il faut créer dans Visual Integrator un champ calculé nommé par exemple Département et dont la définition est la suivante : lpad(Dept,2,"0")

L'astuce consiste à ajouter autant de zéros nécessaires devant le numéro de département afin que la chaine résultante ait une longueur fixe de 2 caractères.

Voici le résultat du test sur l'objet Calc intégrant le nouveau champ calculé :

objet_calc_lpad

Le nouveau champ Département ainsi créé peut maintenant être défini comme Dimension dans Visual Integrator. Afin de conserver les zéros précédemment créés dans le champ, dans les propriétés du champ/colonne, il ne faut pas oublier de cocher l'option La colonne est une chaîne :

propriete_colonne

NB : On peut éventuellement dans ce cas faire l'économie de l'ajout d'une colonne supplémentaire, en créant un calcul dont le nom de la colonne est Dpt (nom du champ tel que trouvé dans la source de donnée initiale - objet entrée du script) en veillant à ce que l'option update soit cochée.

Concernant un codage des codes postaux sur cinq chiffres, la définition serait la suivante : lpad(CP,5,"0") où CP représente le champ relatif aux codes postaux.