Obtenir des champs numériques de taille fixe

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.

Cette astuce permet de rajouter des zéros devant les nombres afin d'avoir un champ avec des valeurs de taille fixe.

Supposons que nous avons un champ appelé Dpt provenant de la source ODBC ou du fichier texte qui alimente le Builder. 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 Builder, un champ calculé nommé par exemple Département et dont la définition est la suivante : substr(100+Dpt,2,2)

L'astuce consiste à ajouter 100 au numéro de département et à récupérer les deux derniers chiffres du résultat. Ainsi voici le résultat sous forme de tableau :

Le nouveau champ Département ainsi créé peut maintenant être défini comme Dimension dans Builder. 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 Column is Always a String (le champ est toujours une chaîne de caractère):

NB : ce champ calculé peut également se faire en amont dans un script Integrator, la définition de la calcul étant la même. 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 : substr(100000+CP,2,5) où CP représente le champ relatif aux codes postaux.