View Categories

Les champs calculés

Présentation #

Les champs calculés permettent de créer de nouvelles informations directement dans une Datasource, à partir des champs retournés par la requête.

Ils permettent par exemple de :

  • réaliser des opérations arithmétiques ;
  • calculer une marge ou un pourcentage ;
  • concaténer plusieurs champs ;
  • appliquer des conditions ;
  • manipuler du texte ;
  • exploiter des dates ;
  • créer des libellés personnalisés ;
  • générer des liens hypertextes ou du contenu HTML simple.

Un champ calculé devient ensuite un champ de la Datasource au même titre que les champs provenant directement de la requête et peut être utilisé dans les composants du tableau de bord.


Requête et Datasource #

Lors de la sauvegarde d’une requête, BiBOARD génère automatiquement une Datasource si aucune Datasource n’est encore associée à cette requête.
La Datasource reprend les champs retournés par la requête.
Par la suite, il est également possible de créer plusieurs Datasources basées sur une même requête.
Cela permet notamment de conserver une seule requête SQL tout en proposant différentes adaptations selon les besoins métier.

Par exemple, à partir d’une requête retournant :

Client
Quantite
PrixUnitaire
DateCommande
ChiffreAffaires
Cout

une Datasource destinée au service commercial pourra ajouter :

Montant
Marge
TauxMarge

alors qu’une autre Datasource basée sur la même requête pourra utiliser des champs calculés et des présentations différents.
Les champs calculés appartiennent donc à la Datasource, et non directement à la requête SQL.
À retenir : il n’est pas nécessaire de dupliquer une requête simplement pour disposer de calculs, de libellés ou de présentations différents selon les usages.


Créer un champ calculé #

Dans la Datasource, ajouter un nouveau champ calculé puis renseigner ses différentes propriétés.

Un champ calculé possède notamment :

  • un nom ;
  • un libellé d’affichage ;
  • un type ;
  • un format ;
  • une formule ;
  • une zone Notes ;
  • l’option Code HTML lorsque le résultat doit être interprété comme du HTML.

Le type choisi doit être cohérent avec le résultat de la formule.

Par exemple :

  • un montant ou un taux : type numérique ;
  • un libellé : type texte ;
  • une date calculée : type date ;
  • une condition retournant vrai ou faux : type booléen.

Utiliser un champ de la Datasource

Dans une formule, un champ est référencé avec la syntaxe :

Field("NomDuChamp")

Par exemple :

Field("PrixUnitaire")

ou :

Field("DateCommande")

Le sélecteur Champs de l’éditeur de formule permet d’insérer automatiquement cette syntaxe.


Les principaux opérateurs #

Les opérations les plus courantes peuvent être saisies directement dans la formule.

OpérationOpérateurExemple
Addition+Field(« MontantHT ») + Field(« Frais »)
Soustraction–Field(« ChiffreAffaires ») – Field(« Cout »)
Multiplication*Field(« Quantite ») * Field(« PrixUnitaire »)
Division/Field(« Marge ») / Field(« ChiffreAffaires »)
Concaténation&Field(« Nom ») &  »  » & Field(« Prenom »)

Des fonctions complémentaires sont également disponibles dans les listes Date, Chaînes, Math, Logique, HTML et Constante de l’éditeur.


Exemples de champs calculés #

Additionner deux valeurs #

Objectif #

Calculer un montant total à partir d’un montant hors taxes et de frais complémentaires.

Champs utilisés #

MontantHT
Frais

Formule #

Field("MontantHT") + Field("Frais")

Exemple #

MontantHT = 1 000
Frais = 50

Résultat :

1 050

Calculer le montant d’une ligne #

Objectif #

Multiplier une quantité par un prix unitaire.

Formule #

Field("Quantite") * Field("PrixUnitaire")

Exemple #

Quantite= 5
PrixUnitaire  = 12.50

Résultat :

62.50

Ce champ peut par exemple être nommé :

MontantLigne

Calculer une marge #

Champs utilisés #

ChiffreAffaires
Cout

Formule #

Field("ChiffreAffaires") - Field("Cout")

Exemple #

ChiffreAffaires = 10 000
Cout = 7 500

Résultat :

2 500

Calculer un pourcentage #

Objectif #

Calculer le taux de marge.
Une condition permet d’éviter une division par zéro.

Formule #

Iff(Field("ChiffreAffaires") = 0,0,(Field("Marge") / Field("ChiffreAffaires")) * 100)

Exemple #

Marge = 2 500
ChiffreAffaires = 10 000

Résultat :

25

Le format du champ peut ensuite être adapté pour présenter correctement la valeur.


Réutiliser un champ calculé dans un autre champ calculé #

Un champ calculé peut utiliser le résultat d’un autre champ calculé.

Par exemple :

Champ calculé MontantLigne

Field("Quantite") * Field("PrixUnitaire")

Puis un second champ MontantTTC :

Field("MontantLigne") * 1.20

Règle importante : respecter l’ordre des champs

Le champ calculé utilisé par une autre formule doit obligatoirement être positionné avant le champ qui l’utilise dans la Datasource.

L’ordre correct est donc :

Quantite
PrixUnitaire
MontantLigne
MontantTTC

et non :

Quantite
PrixUnitaire
MontantTTC
MontantLigne

BiBOARD évalue les champs calculés dans l’ordre dans lequel ils sont positionnés dans la Datasource.
Lorsque MontantTTC est calculé, MontantLigne doit donc avoir déjà été évalué.
Il est possible de modifier l’ordre des champs dans la Datasource par glisser-déposer.

Règle à retenir : si le champ calculé B utilise Field(« ChampA ») et que ChampA est lui-même un champ calculé, ChampA doit être placé avant B.

Cette règle s’applique également lorsqu’il existe plusieurs niveaux de calcul.

Exemple :

MontantHT
MontantTTC
MontantAvecRemise

Chaque champ dépendant doit être positionné après les champs dont il utilise le résultat.


Concaténer plusieurs champs #

L’opérateur & permet d’assembler des chaînes de caractères et des champs.

Exemple : nom complet

Field("Prenom") & " " & Field("Nom")

Avec :

Prenom = Marie
Nom    = Martin

Résultat :

Marie Martin

Exemple : créer un libellé #

"Commande " & Field("NumeroCommande") & " - " & Field("Client")

Résultat possible :

Commande CDE-00258 - Société Exemple

Les textes fixes doivent être placés entre guillemets.


Utiliser une condition #

La fonction Iff permet de retourner une valeur différente selon une condition.

Syntaxe générale :

Iff(condition,valeur_si_vrai,valeur_si_faux)

Exemple : disponibilité d’un produit #

Iff(Field("Stock") > 0,"Disponible","Rupture")
Si :
Stock = 15
le résultat sera :
Disponible
Si :
Stock = 0
le résultat sera :
Rupture

Exemple : classer un chiffre d’affaires #

Iff(Field("ChiffreAffaires") >= 10000,"Objectif atteint","Objectif non atteint")

Ce type de champ calculé peut ensuite être utilisé comme dimension, libellé ou information dans un composant.


Manipuler du texte #

Plusieurs fonctions permettent de transformer des chaînes de caractères.

Mettre un texte en majuscules #

upper(Field("Ville"))

Exemple :

Grenoble

devient :

GRENOBLE

Mettre un texte en minuscules #

lower(Field("Email"))

Supprimer les espaces inutiles #

trim(Field("NomClient"))

Cela peut être utile lorsque les données sources contiennent des espaces avant ou après la valeur.


Manipuler une date #

Les fonctions de date permettent d’extraire différentes informations d’un champ date.

Extraire l’année #

year(Field("DateCommande"))

Avec :

DateCommande = 15/06/2026

Résultat :

2026

Extraire le mois #

month(Field("DateCommande"))

Résultat :

6

Extraire le jour #

day(Field("DateCommande"))

Résultat :

15

Ces calculs peuvent notamment servir à créer des dimensions temporelles supplémentaires sans modifier la requête SQL.


Arrondir une valeur #

La fonction Round permet d’arrondir un nombre.

Exemple :

Round(2,Field("Montant"))

Le premier paramètre indique le nombre de chiffres souhaité après la virgule.


Le HTML #

Les guillemets dans les formules HTML #

Une formule BiBOARD est elle-même une chaîne de caractères délimitée par des guillemets.
Les guillemets nécessaires au HTML doivent donc être doublés.

HTML classique :

<a href="https://exemple.fr">Ouvrir</a>

Dans une formule :

"<a href=""https://exemple.fr"">Ouvrir</a>"

C’est une règle importante lors de la création de contenu HTML.


Créer un lien hypertexte #

Un champ calculé peut également générer du HTML.

Pour que le HTML soit interprété par BiBOARD et non affiché comme du texte, activer l’option :

Case à cocher HTML cochée.

Exemple : lien fixe #

"<a href=""https://intranet.entreprise.fr"" target=""_blank"">Ouvrir l'intranet</a>"

Le texte affiché sera :

Ouvrir l'intranet

et le lien s’ouvrira dans un nouvel onglet.


Exemple : lien dynamique #

Supposons que la Datasource contienne :

DossierId
NumeroDossier

La formule peut être :

"<a href=""https://extranet.entreprise.fr/dossiers/detail.aspx?DossierId="
& Field("DossierId")
& """ target=""_blank"">Ouvrir le dossier "
& Field("NumeroDossier")
& "</a>"

Pour :

DossierId     = 125
NumeroDossier = D-2026-00125

le texte visible sera :

Ouvrir le dossier D-2026-00125

Ajouter un style HTML simple #

L’attribut HTML style permet d’appliquer une présentation simple au lien.

Exemple :

"<a href=""https://extranet.entreprise.fr/dossiers/detail.aspx?DossierId="
& Field("DossierId")
& """ target=""_blank"" style=""font-weight:bold;color:#0066cc;text-decoration:none;"">Ouvrir le dossier</a>"

Le lien sera affiché en gras, avec une couleur spécifique et sans soulignement.
Il est recommandé de conserver des styles simples afin de rester cohérent avec le thème graphique du tableau de bord.


Utiliser une URL provenant directement des données

L’adresse complète peut également être fournie par la requête.

Par exemple, avec :

UrlDocument
NomDocument

la formule peut être :

"<a href="""
& Field("UrlDocument")
& """ target=""_blank"">"
& Field("NomDocument")
& "</a>"

Cette solution est particulièrement pratique pour les liens vers une GED, un ERP, un CRM ou un extranet.


Créer un lien vers une adresse e-mail #

Avec un champ :

Email

utiliser :

"<a href=""mailto:"
& Field("Email")
& """>"
& Field("Email")
& "</a>"

L’option Code HTML doit également être activée.


Utiliser la zone Notes #

Il n’est pas possible d’ajouter des commentaires de ce type dans une formule :

/* Calcul du montant TTC */

Pour documenter un champ calculé, utiliser la zone Notes prévue dans les propriétés du champ.

Par exemple :

Calcule le montant TTC à partir du champ calculé MontantHT.
MontantHT doit être positionné avant ce champ dans la Datasource.
Cela facilite la maintenance des Datasources comportant plusieurs calculs.


Bonnes pratiques #

Donner des noms explicites #

Préférer :

MontantLigne
Marge
TauxMarge
AnneeCommande
NomComplet
LienDocument

à des noms comme :

Calc1
Champ2
Test


Choisir le bon type #

Le type du champ doit correspondre au résultat attendu.

Par exemple, une formule :

Field("Quantite") * Field("PrixUnitaire")

doit utiliser un type numérique.

Une formule :

Iff(Field("Stock") > 0,"Disponible","Rupture")

doit utiliser un type texte.


Respecter l’ordre des dépendances #

Lorsque plusieurs champs calculés dépendent les uns des autres, les organiser dans leur ordre de calcul.

Exemple :

Quantite
PrixUnitaire
MontantHT
TauxTVA
MontantTVA
MontantTTC

Cela rend également la Datasource plus facile à comprendre et à maintenir.


Éviter les calculs inutilement complexes #

Les champs calculés sont particulièrement adaptés aux traitements simples réalisés à partir des données de chaque ligne :

  • opérations ;
  • conditions ;
  • conversions ;
  • libellés ;
  • dates ;
  • liens.

Pour des traitements très complexes ou nécessitant de transformer fortement les données avant leur exploitation, il peut être préférable de réaliser le traitement directement dans la requête SQL.


À retenir #

Un champ calculé permet d’enrichir une Datasource sans modifier sa requête SQL.

La syntaxe principale pour utiliser une donnée est :

Field("NomDuChamp")

Les opérateurs les plus courants sont :

+    Addition
–    Soustraction
*    Multiplication
/    Division
&    Concaténation

Les fonctions disponibles permettent également de gérer les conditions, les dates, les chaînes de caractères, les calculs mathématiques et le HTML.

Enfin, lorsqu’un champ calculé en utilise un autre :

le champ utilisé doit toujours être positionné avant le champ qui l’utilise dans la Datasource. Cette règle est essentielle pour garantir que les calculs soient évalués dans le bon ordre.

Défiler vers le haut