Bonjour,
Supposons d’une part une table (tStock) qui renseigne le stock par bouteille et d’autre part un formulaire (fBouteilles) avec un groupe d’options qui vaut de 0 à 2 selon le bouton coché.
Le problème
Dans une requête, sélectionner les enregistrements de tStock selon la valeur du groupe.
J’ai tenté ceci :
que Access convertit en
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT tStock.Stock FROM tStock WHERE (((tStock.Stock)=IIf([Formulaires]![fBouteilles]![caStock]=0,0))) OR (((tStock.Stock)=IIf([Formulaires]![fBouteilles]![caStock]=1,([tStock].[Stock])<>0))) OR (((tStock.Stock)=IIf([Formulaires]![fBouteilles]![caStock]=2,[Stock])));
Cette requête donne le bon résultat pour 0 et 2, mais elle ramène seulement les stocks à zéro pour la valeur 1.
Où est l’os ? C’est la traduction du « <> 0 » en « ([tStock].[Stock])<>0) » dans le SQL qui fait problème.
Après quelques heures d’acharnement, une solution pas « naturelle ».
Au lieu de se référer directement à la table, on crée cette requête :
Et cette fois, pour se référer au groupe d’options :
que Access convertit en
qui donne le bon résultat, mais le chemin est tortueux, donc difficile à expliquer dans un tutoriel...
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT rStock.tBouteillesFK, rStock.Stock FROM rStock WHERE (((rStock.VraiSIZero)=IIf([Formulaires]![fBouteilles]![caStock]=0,True))) OR (((rStock.VraiSIZero)=IIf([Formulaires]![fBouteilles]![caStock]=1,False))) OR (((rStock.VraiSIZero)=IIf([Formulaires]![fBouteilles]![caStock]=2,[VraiSIZero])));
Quelqu’un connaît-il la syntaxe pour se référer directement à la colonne Stock ?
Merci déjà.
Partager