Je voudrais toutefois vous parler de la fonction VraiFaux qui permet d'obtenir des résultats intéressants.
Cette fonction permet d'afficher tel ou tel texte selon la valeur d'un champ. Dans notre exemple, nous allons afficher Riche si le SalaireAvecPrime (qui est un calcul basé sur salaireMensuel) est supérieur à 4000, et Pauvre si c'est inférieur ou égal à 4000. Ce n'est pas un exemple des plus utiles, mais il va vous permettre de bien comprendre le fonctionnement.
En gros :
- Si SalaireAvecPrime est plus grand que 4000, affiche Riche, sinon Affiche Pauvre(oui, je suis en Suisse ).
- La condition (Si SalaireAvecPrime est plus grand que 4000)
- Ce qu'on affiche si c'est vrai ("Riche")
- Ce qu'on affiche si c'est faux ("Pauvre")
Si vous disposez d'Access en Français, voici la bonne façon d'écrire cette fonction :
- VraiFaux ([SalaireAvecPrime]>4000 ; "Riche" ; "Pauvre")
- iif ([SalaireAvecPrime]>4000 , "Riche" , "Pauvre")
Oui, il y a 2 i à iif (ne me demandez pas pourquoi)
Faisons-le ensemble
Créez un champ EtatRichesse après salaireAvecPrime, en type de données Calculé (On peut donc faire un calcul sur un autre calcul)Vous pourriez écrire toute la fonction à la main, mais exploitons plutôt le générateur d'expression :
- Cliquez dans Fonctions/Déroulement de programme/iif :
Oui, je vous ai dit que la fonction s'appelait VraiFaux en Français, et là, c'est la version anglais iif qui est affichée, même dans la version française... De plus, au-dessus de iif, il y a la fonction Choisir (qui se traduit par Choose en anglais), mais on n'est plus à une fantaisie de traduction, n'est-ce pas ? - Cliquez dans <<expression>>, et double-cliquez sur SalaireAvecPrime :
- Cliquez sur <<Expr>>, et écrivez à la place >4000 :
- Cliquez sur <<truepart>> et écrivez "Riche" :
- Cliquez sur <<falsepart>> et écrivez "Pauvre" :
Lorsque vous cliquez sur OK, vous voyez enfin la fonction VraiFaux qui apparaît à la place de iif :
Le résultat fonctionne parfaitement : Plusieurs types de données = erreur
Maintenant, admettons que nous désirions une colonne qui affiche le montant des salaires, mais, s'îl s'agit de salaires supérieurs à 5'000 francs, il faut afficher CONFIDENTIEL,
il faudrait écrire ceci :
Or, si vous essayez, vous allez voir ce message d'erreur totalement obscur
Normalement, on ne s'occupe pas de la propriété Type de résultat : dans les cas précédents, il comprenait bien qu'il s'agiissait d'un nombre (calcul de l'age) ou d'un texte (Gauche, Riche et pauvre).
Mais ici, il hésite ! Texte ou nombre monétaire ? ... Pourtant, on a bien vu que le type de données Texte permettait de stocker indifféremment des chiffres et des lettres, mais voilà, Môssieur Access a décidé que ce n'était pas possible !
Si nous avions utilisé une requête, comme je l'ai montré ici plus haut, nous n'aurions eu aucun problème !
Il faut donc que nous trouvions une astuce, un pis-aller, pour obtenir ce que nous voulons : il faudrait que le salaire soit, dans ce cas, "transformé" en texte !
Pour ce faire, nous allons utiliser la fonction Majuscule
: on ne veut rien mettre en majuscule, on est d'accord, mais le simple
fait d'utiliser une fonction de texte transforme, comme par magie, le
chiffre en texte. Modifiez l'expression comme suit :
Attention à ne pas vous tromper avec le nombre et l'emplacement des [crochets] et des (parenthèses) :
VraiFaux([SalaireMensuel]>5000;"CONFIDENTIEL";Majuscule([SalaireMensuel])).
Et voilà : il n'y a plus de message d'erreur, et on obtient le résultat escompté.
Malheureusement, les montants s'affichent sans formatage, mais bon, c'est mieux que rien :
Aucun commentaire:
Enregistrer un commentaire