Bonjour à tous,
Venant du monde C, j'ai cherché l'équivalent de l'opérateur ternaire pour afficher mes pluriels, mais je n'avais rien trouvé concernant ce sujet... alors je me dis que cela pourrait intéresser certains...
Je trouve qu'il permet d'écrire du code élégant et pratique.
Là où je m'en sers le plus, c'est effectivement pour afficher des messages gérant les pluriels...
Ainsi, au lieu d'afficher un "Il y a XXX record(s) à traiter", l'opérateur ternaire permet d'écrire en une ligne 'record' s'il n'y en a qu'un, ou 'records' s'il y en a plus d'un :
Le iif étant noyé au milieu de ma ligne, il ne se voit pas, et pourtant cela gère le pluriel sans alourdir le code par un if then else
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ma_phrase= "Il y a " + CStr(nb) + " record" + iif(nb>1;"s";"") + " à traiter"
S'il y a plusieurs pluriels, on peut optimiser le code pour ne tester qu'une seule fois :
Le code est très lisible et peut donner :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim s As String s=iif(nb>1;"s";"") phrase = "Il y a " + CStr(nb) + " record"+s + " concerné"+s +". Voulez-vous le"+s +" supprimer ?"
"Il y a 1 record concerné. Voulez-vous le supprimer ?"
"Il y a 3 records concernés. Voulez-vous les supprimer ?"
Autre usage intéressant : la sélection conditionnée de champ... (fusion en un champ)
Imaginons un coliseur disposant d'une table des transports. Cette table va contenir la description de tous les colis à transporter :
[N°colis unique]
[Lieu de chargement]
[Date/Heure de chargement]
[Lieu de livraison]
[Date/Heure de livraison]
[État du transport]
Chaque record aura donc 2 adresses postales et 2 horaires (livraison en J+x)
Dans la tournée d'un chauffeur, il y aura aléatoirement des chargements et des livraisons de colis, afin d'optimiser les KM
Si je veux faire un récap journalier de la tournée d'un chauffeur, il suffit que dans ma requête, en mode création, j'indique :
[N°colis unique]
[État]
Endroit: iif([État]="Livré";[Lieu Livraison];[Lieu Chargement])
Heure: iif([État]="Livré";[Date/Heure Livraison];[Date/Heure Chargement])
et voilà, en triant par ordre croissant sur le champ Heure, j'obtiens le récap journalier du chauffeur, sans me soucier de savoir s'il s'agit d'un chargement ou d'une livraison...
Partager