Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Requêtes et SQL.
Requêtes et SQL. Tout ce qui concerne vos questions sur les requêtes et le SQL sous Access se trouve ici.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/11/2010, 07h21   #1
Invité de passage
 
Alex
Inscription : novembre 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Alex

Informations forums :
Inscription : novembre 2010
Messages : 2
Points : 0
Points : 0
Par défaut Fonction IIf Access 2003

Bonjour,

J'ai un petit problème avec ma fonction IIf.
Je m'explique. Je veux effectuer une requête ayant pour résultat de ne prendre en compte que certaines lignes de ma table. Par exemple les lignes ou le client est Apple.
Ce client la est déterminé à partir d'une combobox faisant référence à une liste de clients.
Jusque là ça va. Maintenant, ce que je veux, c'est que si la combobox est vide, ca n'effectue pas la requête (à terme, ca sera une requête multicritère).

Donc voici mon IIf :
Code :
IIf([Forms]![Reports menu]![Direct customer]=0,[Master Table]![Direct Customer],[Forms]![Reports menu]![Direct customer])
[Forms]![Reports menu]![Direct customer] correspondant à ma combobox
[Master Table]![Direct Customer] à la colonne de ma table qu'il faut trier.

Quand je lance avec ma combobox à 0 tout se passe bien, il m'affiche tout le ptit monde mais si je lui mets Apple par exemple (qui est dans la liste), ca me donne ça :
Citation:
"This expression is typed incorrectly, or is too complex to be evaluated. For exemple, a numeric expression may contain too many complicated elements. Try simplifying the expression by assigning parts of the expression to variable"
Je ne comprends pas d'où vient le problème. A moins que la commande IIf ne puisse faire référence qu'à des nombres et non une chaine de caractère ce qui signifierait qu'il faut que je refasse ma bdd.... Et oui, j'ai pas mis de autonumber dans la table customer.

Voila, donc si quelqu'un a une idée ou un truc qui y ressemble, je suis preneur !
FlyingAlex est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 09h11   #2
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 936
Points : 7 936
bjr,

lorsque la liste est vide, elle est à Null

à tester donc avec IsNull :
Code :
VraiFaux(EstNull([Forms]![Reports menu]![Direct customer].[value]);[Master Table].[Direct Customer];[Forms]![Reports menu]![Direct customer].[value])
ou plus court avec Nz :
Code :
nz([Forms]![Reports menu]![Direct customer].[value];[Master Table].[Direct Customer])
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 09h16   #3
Invité de passage
 
Alex
Inscription : novembre 2010
Messages : 2
Détails du profil
Informations personnelles :
Nom : Alex

Informations forums :
Inscription : novembre 2010
Messages : 2
Points : 0
Points : 0
Merci de ton coup de main mais je viens de trouver un autre moyen qui marche (et qui correspond a ce que je voulais faire ensuite).

En fait, j'ai créé une checkbox et mon IIf est devenu

Code :
IIf([Forms]![Reports menu]![AllDC]=False,[Forms]![Reports menu]![Direct customer],[Master Table]![Direct Customer])
Et ca roule, car je voulais à la base créer une checkbox qui cacherait le combobox pour empêcher tout problème avec l'utilisateur (je comprends pas, j'avais rentré un client pourtant)

Mais merci quand même!!
FlyingAlex est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h01.


 
 
 
 
Partenaires

Hébergement Web