Utilisation de la formule @Format

Voici quelques mois, j’avais écrit article montrant comment mettre en place un champ chrono, et à cette occasion, j’avais donné un exemple des fonctionnalités de la formule @Format. La syntaxe de cette fonction du langage MezzoScript est issue de celle disponible dans .NET, le langage de développement de Mezzoteam. Je vous propose de voir quelques exemples de paramétrage possible de cette fonction.

Syntaxe
La fonction @Format prend comme arguments un objet (qui peut être une chaîne de caractères, un nombre, une date…), une chaîne décrivant le format à appliquer, et renvoie la chaîne formattée.
@Format(object ,formatString) as stringFonctions sur les chaînes de caractères
Vous pouvez utiliser la notation {0} pour insérer une valeur variable dans une chaîne de caractères, plutôt que de recourir à l’opérateur de concaténation &. Ainsi :
@Format("premier","Mon {0} test")
retourne
Mon premier test

Fonctions sur les nombres
Pour formatter des nombres,vous avez deux tags à votre disposition : # et 0. Le premier tag renvoie le chiffre correspondant, ou rien s’il n’y en a pas. Le second renvoie le chiffre correspondant ou 0, ce qui est très pratique pour formatter les numéros d’ordre des documents. Ainsi :
@Format(123456,"00000000")
retourne
00123456

Par contre
@Format(123456,"########")
retourne
123456

Il est également possible d’utiliser ces tags pour formatter d’autres nombres, comme par exemple un numéro de téléphone (vous me direz, ils sont généralement stockés au format chaîne ;-), comme par exemple :
@Format(1234356789,"+33 (0) ### ### ###")
retourne
+33 (0) 123 456 789

Il existe également une syntaxe permettant d’alterner les représentations en fonction de la valeur (positive, négative, nulle). On peut ainsi écrire :
@format(1234,"€ #,##0.00;(€ #,##0.00);Zero")
qui retournera € 1 234,00 en passant 1234, (€ 1 234,00) en passant -1234, ou Zero en passant 0. Il est à noter que le formattage des nombres (espaces pour séparer les milliers, virgule pour les décimales) changera selon la langue choisie par l’utilisateur.

Fonctions sur les dates
Les possibilités de conversions les plus intéressantes (et les plus utiles) concernent les dates et les heures. Les plsu simples des tags permettent de récupérer la date et l’heure au format court ou long, selon les préférences de la langue de l’utilisateur. Par exemple :
@Format(maDateHeure,"D")
retourne vendredi 21 septembre 2007 si telle est le contenu de maDateHeure. Dans le même ordre d’idée, d permet de retourner une date courte (21/09/2007), t une heure courte (19:32) et T une heure longue (19:32:53) ; f combine une date longue et une heure courte, F une date longue et une heure longue ; f et G font la même chose, mais en variant la date au lieu de l’heure.

Il est également possible d’extraire une partie de la date ou de l’heure, en utilisant les tags suivants :
dd, ddd, dddd pour le jour, renvoie 21 ou ven. ou vendredi,
MM, MMM, MMMM pour le mois, renvoie 09 ou sept. ou septembre,
yy, yyyy pour l’année, renvoie 07 ou 2007.

hh pour l’heure renvoie 19,
mm pour les minutes renvoie 32,
ss pour les secondes renvoie 53.

Voilà, vous en savez déjà suffisamment pour pouvoir vous amuser ! Si vous souhaitez aller plus loin, vous pouvez vous plonger dans la documentation de .NET que vous trouverez (en anglais) sur msdn.microsoft.com. Attention tout de même, tous les types de formatages ne sont pas supportés par Mezzoteam.

2 réponses
  1. Emmanuel
    Emmanuel dit :

    Dans le champ cible, vous devez mettre la formule suivante ; si MONTANT est le code du champ contenant votre valeur numérique décimale :

    $zero:=0;
    @ifs(MONTANT>$zero,MONTANT,-MONTANT)

    Bonne journée.

    Répondre
  2. BEN
    BEN dit :

    Bonjour,

    Comment faire la valeur absolue d’une valeur d’un champ numérique (type décimal) :
    MONTANT = champs de type décimal
    Je veux être sûr que MONTANT est toujours positif, je crée un champ calculé contenant la valeur absolue de MONTANT … comment écrire une bonne formule qui marche ??? sachant que la comparaison de MONTANT à 0.0 ne marche pas vraiment !!!
    MErci

    Répondre

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Répondre à BEN Annuler la réponse

Votre adresse e-mail ne sera pas publiée.