ATTENTION À IIF

MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 - 14 sept. 2005 à 14:33
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007 - 21 sept. 2005 à 13:03
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/33789-attention-a-iif

cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
21 sept. 2005 à 13:03
:)

c'est juste un exemple simple fait pour être clair; remplace mon bit (meme si je m'ysuis habitué) par quelque chose de plus grand (sinon c'est pas la peine) et les affectations 0 & 1 par MaMeuf(oui) & SerialLooser.Name si tu préfères ;)


VBnouille, tirage de nouille
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
21 sept. 2005 à 12:42
_bit = iif (_boolean, 1, 0)
s'ecrit
_bit = Abs ( _boolean )
cs_Benouille Messages postés 215 Date d'inscription jeudi 24 octobre 2002 Statut Membre Dernière intervention 7 septembre 2007
21 sept. 2005 à 10:59
Nz c'est comme coalesce en sql? c'est con j'ai encore réinventé la roue moi ...

moi j'aime bien les iif, c'est parlant dans le code et souvent je le prefere.
entre if _boolean then _bit=1 else _bit=0
et _bit = iif (_boolean, 1, 0) mon choix est vite fait.

le seul probleme que j'ai rencontré, outre les appels de fonctions comme ça a été dit, c'est la gestion des valeurs nulles, ou des casts sujets a plantage.

genre :
= iif (isnumeric (_var), cint(_var), empty)

si la variable _var n'est pas numérique, le cint va lever une exeption et la il faut utiliser le if.


a part ça je trouve l'utilisation du iif tres bien, voire je le préfère pour la lisibilité du code.
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
20 sept. 2005 à 08:25
> Le probleme avec Excel et Access sont les division par zéro.

Il existe tout une flopée de fonction pour traiter les IsNull, Nz (Non-zéro), IsNumeric, Is... avec leur correspondant en français : EstNum, ...
Certains ne marchent qu'avec Access comme Nz (à ma connaissance) : cf. la doc Access :

La fonction Nz peut souvent remplacer une fonction IIf. Par exemple, dans le code suivant, il faut deux expressions incluant la fonction IIf pour retourner le résultat souhaité. La première expression qui contient la fonction IIf sert à contrôler la valeur d'une variable et à la convertir en zéro si elle est Null.

varTemp = IIf(IsNull(varFreight), 0, varFreight)
varResult = IIf(varTemp > 50, "High", "Low")

Dans l'exemple suivant, la fonction Nz procure la même fonctionnalité que la première expression et le résultat souhaité est atteint en une instruction au lieu de deux.

varResult = IIf(Nz(varFreight) > 50, "High", "Low")
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
20 sept. 2005 à 00:09
salut



---------------------------
IF->
SI (condition vrai) ALORS
variable REçOIT "oui"
SINON
variable REçOIT "non"
FIN

---------------------------
IIF->
variable REçOIT SI((condition vrai) ALORS "oui" SINON "non")

---------------------------


et le "débat" porte sur le fait que si le résultat à attribuer nécessite lui-même un calcul trop long, les conséquences peuvent aller de l'erreur jusqu'à ....
(no limit :-p)
PCPT
Afficher les 27 commentaires