Access 2003, IIf dans requête

Fermé
FlyingAlex Messages postés 13 Date d'inscription lundi 29 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - Modifié par FlyingAlex le 30/11/2010 à 08:06
FlyingAlex Messages postés 13 Date d'inscription lundi 29 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010 - 30 nov. 2010 à 09:59
Bonjour,

J'ai un problème (encore) avec ma fonction IIf.
Je m'explique: j'ai une requête dans ma base de données que je construis en design view. J'aimerai mettre un critère sur une des colonnes:
Si la checkbox ChkProduct est True, dans ce cas le critère doit être la valeur de la combobox Product
Si la checkbox ChkProduct est false, il ne doit pas y avoir de critère, en gros c'est comme si c'étais vide.

IIf([Forms]![Reports menu]![ChkProduct]=True,[Forms]![Reports menu]![Product])

Et ca ne marche pas, j'ai aussi essayé ca

IIf([Forms]![Reports menu]![ChkProduct]=True,[Forms]![Reports menu]![Product],"")

Non plus

Voila, si vous avez une piste, merci de m'aider!

Edit : quand je dis que ca marche pas, c'est la deuxieme partie qui ne marche pas. Si je coche la checkbox, c'est ok mais si je la coche pas, ca ne marche pas (j'ai pu verifier ca car plusieurs colonne ont ce critere, et par exemple, si une checkbox est cochée et une autre non, aucun résultat ne s'affiche alors qu'il devrait y en avoir.

4 réponses

Jean_Jacques Messages postés 1040 Date d'inscription mercredi 30 avril 2008 Statut Membre Dernière intervention 1 août 2014 112
30 nov. 2010 à 08:23
Bonjour,

Essayez de remplacer la virgule par un point-virgule .....

Cordialement
0
FlyingAlex Messages postés 13 Date d'inscription lundi 29 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
30 nov. 2010 à 08:31
Access marque un message d'erreur "...Invalid syntax"
0
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
30 nov. 2010 à 08:33
Salut, tu essaies de mettre le iif dans la clause WHERE ?
0
FlyingAlex Messages postés 13 Date d'inscription lundi 29 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
Modifié par FlyingAlex le 30/11/2010 à 08:39
Je ne passe pas par le SQL, je passe par la design view. Je met ce code dans le critere. Le truc, c'est que ma requete est assez enorme, et je ne suis pas avance du tout en SQL.....

Juste comme ca, je te met la requete mais bon (la elle est complete, je fait en sorte de la reduire a l'essentiel)

SELECT [Master Table].[Project name], [Master Table].Suffix, [Master Table].[Part Number], [Master Table].[Customer part number], [Master Table].[Login date], [Master Table].NBO, [Master Table].Sales, [Master Table].[Project Manager], [Master Table].[Design Engineer], [Master Table].[Product structure DA internal vers], [Master Table].[Product structure DA external vers], [Master Table].[Product structure LGF], [Master Table].[Product structure IA], [Master Table].[Product structure Module], [Master Table].[Project Volume (in k pcs)], [Master Table].[End customer region], [Master Table].[Gate 0], [Master Table].[Gate 2], [Master Table].[Gate 3], [Master Table].[Gate 4], [Master Table].[Project killed date], [Master Table].[Reason for killling], [Master Table].[Comments for killing project or making it inactive], [Master Table].[End customer name], [Master Table].[DA technology], [Master Table].[LGF technology], [Master Table].[IA technology], [Master Table].[Module technology]
FROM [Master Table]
WHERE ((([Master Table].[Login date])>=[Forms]![Reports menu]![From_date] And ([Master Table].[Login date])<=[Forms]![Reports menu]![To_date]) AND (([Master Table].[Product structure DA internal vers])=[Forms]![Reports menu]![Product_structure_DA_internal_vers]) AND (([Master Table].[Product structure DA external vers])=[Forms]![Reports menu]![Product structure DA external vers]) AND (([Master Table].[Product structure LGF])=[Forms]![Reports menu]![Product structure LGF]) AND (([Master Table].[Product structure IA])=[Forms]![Reports menu]![Product structure IA]) AND (([Master Table].[Product structure Module])=[Forms]![Reports menu]![Product structure Module]) AND (([Master Table].[End customer region])=IIf([Forms]![Reports menu]![AllECregion]=False,[Forms]![Reports menu]![End Customer Region],[Master Table]![End customer region])) AND (([Master Table].[Gate 0])=[Forms]![Reports menu]![Gate 0]) AND (([Master Table].[Gate 2])=[Forms]![Reports menu]![Gate 2]) AND (([Master Table].[Gate 3])=[Forms]![Reports menu]![Gate 3]) AND (([Master Table].[Gate 4])=[Forms]![Reports menu]![Gate 4]) AND (([Master Table].[End customer name])=IIf([Forms]![Reports menu]![AllEC]=False,[Forms]![Reports menu]![End customer],[Master Table]![End customer name])) AND (([Master Table].[DA technology])=IIf([Forms]![Reports menu]![Product_structure_DA_internal_vers]=True Or [Forms]![Reports menu]![Product structure DA external vers]=True,[Forms]![Reports menu]![DA technology])) AND (([Master Table].[LGF technology])=IIf([Forms]![Reports menu]![Product structure LGF]=True,[Forms]![Reports menu]![LGF technology])));
0
FlyingAlex Messages postés 13 Date d'inscription lundi 29 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
30 nov. 2010 à 08:42
La voila reduite a fond :

SELECT [Master Table].[Part Number], [Master Table].[Product structure DA internal vers], [Master Table].[Product structure DA external vers], [Master Table].[DA technology], [Master Table].[Product structure LGF], [Master Table].[LGF technology]
FROM [Master Table]
WHERE ((([Master Table].[Product structure DA internal vers])=[Forms]![Reports menu]![Product_structure_DA_internal_vers]) AND (([Master Table].[Product structure DA external vers])=[Forms]![Reports menu]![Product structure DA external vers]) AND (([Master Table].[DA technology])=IIf([Forms]![Reports menu]![Product_structure_DA_internal_vers]=True Or [Forms]![Reports menu]![Product structure DA external vers]=True,[Forms]![Reports menu]![DA technology])) AND (([Master Table].[Product structure LGF])=[Forms]![Reports menu]![Product structure LGF]) AND (([Master Table].[LGF technology])=IIf([Forms]![Reports menu]![Product structure LGF]=True,[Forms]![Reports menu]![LGF technology])));
0
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
30 nov. 2010 à 08:51
Re,

Je ne pense pas que ça soit possible de le faire ainsi j'ai eu le même problème.
Regardez ici http://fr.w3support.net/index.php?db=so&id=317377 notemment le poste #1981489
0
FlyingAlex Messages postés 13 Date d'inscription lundi 29 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
30 nov. 2010 à 08:55
Arf en gros, il faut qu'en code sur le bouton, je liste tous les cas possible c'est ca? Sachant que la requete entraine une formulaire, je suis pas sorti des ronces....
0
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
30 nov. 2010 à 08:58
En gros, oui.
Ou alors tu englobes ta requête dans un iif. Dans le premier cas, tu fais une requête avec le WHERE, dans l'autre tu le retires (jamais testé)
0
FlyingAlex Messages postés 13 Date d'inscription lundi 29 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
30 nov. 2010 à 09:00
Je vois ce que tu veux dire, meme si je ne sais pas trop comment faire. Le truc, c'est que je n'ai pas que deux checkbox mais 4 (j'ai minimise pour la comprehension) donc, si mes calculs sont bon, 16 possibilites...
0
Gaunts Messages postés 1125 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 18 mars 2012 116
30 nov. 2010 à 09:55
C'est malheureusement pour moi la meilleure solution.
Peut être que qu'avec un peu de chance quelqu'un en a une meilleure
0
FlyingAlex Messages postés 13 Date d'inscription lundi 29 novembre 2010 Statut Membre Dernière intervention 2 décembre 2010
Modifié par FlyingAlex le 30/11/2010 à 09:59
Merci de ton coup de main, pour le moment, je laisse tomber cette partie (manque de temps, le stage se termine bientot). Je vais exporter les resultats de la requete sous excel est puis ils pourront trier manuelement. D'ailleurs (je pense pas que ca vaille la peine de faire un nouveau poste, tu dois savoir) comment fait on pour dire a access de copier dans le meme dossier que la bdd. Genre maintenant j'ai ca, mais si la bdd bouge c'est le bordel

DoCmd.TransferSpreadsheet acExport, , "Revenue query", "C:\Documents and Settings\Al\DB \Revenue report.xls", False, ""

Merci encore!
0