OVH Cloud OVH Cloud

Paramètre de requête ou pas

3 réponses
Avatar
Toine
B'jour.

J'utilise une requête qui a pour critère une liste affichée dans un
formulaire.
Cette liste propose différents items + une ligne (tous) qui pourrait
permettre de ne pas filtrer les enregistrements sur ce critère.

Sauf que je n'arrive pas à écrire la requête qui fonctionnera avec soit
un élément de la liste, soit l'élément (tous) pour tout afficher.

Me fais-je bien comprendre ?

Ex: (c'est une collection de films, le critère porte sur le support)

1. (Tous)
2. Cassette
3. DVD
4. DivX
5. VCD

La ligne 1 doit pouvoir me renvoyer tous les enregistrements.
Les autres lignes douvent me renvoyer uniquement les enregistrements
correspondants.


Merci de votre aide

3 réponses

Avatar
Raymond [mvp]
Bonjour Toine.

tu peux utiliser:
SELECT table1.*, table1.Numéro FROM table1
WHERE table1.Numéro Like IIf([Support]="tous","*",[Support]) & "*";
ou
WHERE table1.Numéro Like IIf([Support]="tous","",[Support]) & "*";

dans ces cas-là il n'y a même pas besoin de tous, car une valeur null
sortira tous les éléments grâce à "*"
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Toine" a écrit dans le message de
news:butijg$6n2$
B'jour.

J'utilise une requête qui a pour critère une liste affichée dans un
formulaire.
Cette liste propose différents items + une ligne (tous) qui pourrait
permettre de ne pas filtrer les enregistrements sur ce critère.

Sauf que je n'arrive pas à écrire la requête qui fonctionnera avec soit
un élément de la liste, soit l'élément (tous) pour tout afficher.

Me fais-je bien comprendre ?

Ex: (c'est une collection de films, le critère porte sur le support)

1. (Tous)
2. Cassette
3. DVD
4. DivX
5. VCD

La ligne 1 doit pouvoir me renvoyer tous les enregistrements.
Les autres lignes douvent me renvoyer uniquement les enregistrements
correspondants.


Merci de votre aide




Avatar
Pierre CFI [mvp]
bonjour
tu modifies le critéres
Comme Vraifaux([liste....] = "Tous";"*";[liste....] ) ou (je sais plus)

Comme "*" & Vraifaux([liste....] = "Tous";"";[liste....] )
--
Pierre CFI
MVP Microsoft Access
Mail : http://cerbermail.com/?z0SN8cN53B

Site pour bien commencer
http://users.skynet.be/mpfa/
Site perso
http://access.cfi.free.fr
"Toine" a écrit dans le message de news: butijg$6n2$
B'jour.

J'utilise une requête qui a pour critère une liste affichée dans un
formulaire.
Cette liste propose différents items + une ligne (tous) qui pourrait
permettre de ne pas filtrer les enregistrements sur ce critère.

Sauf que je n'arrive pas à écrire la requête qui fonctionnera avec soit
un élément de la liste, soit l'élément (tous) pour tout afficher.

Me fais-je bien comprendre ?

Ex: (c'est une collection de films, le critère porte sur le support)

1. (Tous)
2. Cassette
3. DVD
4. DivX
5. VCD

La ligne 1 doit pouvoir me renvoyer tous les enregistrements.
Les autres lignes douvent me renvoyer uniquement les enregistrements
correspondants.


Merci de votre aide




Avatar
Toine
Impeccable, ça marche du tonnerre.

Merci



Bonjour Toine.

tu peux utiliser:
SELECT table1.*, table1.Numéro FROM table1
WHERE table1.Numéro Like IIf([Support]="tous","*",[Support]) & "*";
ou
WHERE table1.Numéro Like IIf([Support]="tous","",[Support]) & "*";

dans ces cas-là il n'y a même pas besoin de tous, car une valeur null
sortira tous les éléments grâce à "*"