Question : Quel paramètre pour indiquer la nature (nombre entier, valeur décimale, chaine de caractères, montant monétaire) des données d’une colonne dans un export tabulaire ?

À propos de l’usage du paramètre cast

Niveau : Scriptage (gabarit et exportation)

Commandes concernées : EXP-10

Réponse :

L’indication de la nature de la donnée se fait avec le paramètre cast. Les valeurs possibles sont :

  • integer : la valeur est un nombre entier

  • decimal : la valeur est un nombre décimal

, percentage : la valeur est un nombre décimal qui devra être traité comme un pourcentage (0.1 donne 10%)

  • money : la valeur est un montant monétaire (par moment monétaire on entend un chiffre associé à une devise)

  • date : la valeur est une date au format ISO (année-mois-jours)

  • json : la valeur est un tableau ou un objet au format JSON

En absence de paramètre cast, la donnée est traitée comme une chaine de caractère.

Comme on peut le voir lorsque l’on crée un nouvel export, cette indication est utilisée dans le formatage proposée par défaut pour la colonne du numéro d’une fiche, pour celle d’un champ monétaire ainsi que pour les dates de création et de modification de la fiche comme le montre les exemples ci-dessous :

idcorpus
idcorpus
-
cast=integer

Formatage par défaut de la colonne du numéro de la fiche

date_creation
date_creation
{iso}
cast=date

Formatage par défaut de la colonne de la date de création

propriete_montantcredit
propriete_montantcredit
{code}
cast=money

Formatage par défaut d’un champ monétaire

L’indication de la nature de la donnée est particulièrement utile pour l’exportation au format ODS. En effet, sans indication de cette nature, un nombre est traité comme une chaine de caractères et n’est pas reconnu comme un nombre (Sous LibreOffice, on voit un guillemet droit apparaitre lorsque l’on clique sur la cellule '20000), ce qui interdit la réalisation d’opérations avec celui-ci.

Une des conséquences de l’utilisation du paramètre cast, c’est qu’une cellule peut apparaitre vide là où il y avait une valeur avant son utilisation. En effet, si la chaine de caractères de la cellule ne correspond pas à la donnée indiquée (par exemple, si la chaine contient des lettres alors que la donnée doit être un nombre), alors la valeur est remplacée par la valeur nulle (sans même tenir compte d’une éventuelle valeur du paramètre defvalue. Pour un nombre, la valeur ne doit comporter que des chiffres (pas de séparateur) et le point doit être utilisé comme séparateur des décimales. Pour une valeur monétaire, le code en trois lettres de la devise doit précéder ou suivre le montant. Pour une date, elle doit être au format ISO (année en quatre chiffres suivi du mois et du jour en deux chiffres avec le tiret comme séparateur). L’utilisation des formatages {code} pour les nombres et les montants et {iso} pour les dates assure que les données seront bien traitées.

Questions voisines