Requête Access qui fait ET et OU

  • Auteur de la discussion Sirguda02
  • Date de début

Sirguda02

Nouveau membre
Bonjour

J'ai une base qui gère en fait des fournisseurs et leur assigne des activités et la région où ils sont basés. J'ai un formulaire qui fait une recheche des fournisseurs par activité, par région, ou les 2. Seul problème, les requêtes de sélection que j'arrive à faire ne gèrent que le ET ou que le OU. C'est à dire que si je fais une requête en ET, bah si je rempli pas un des critères, la requête ne me touve aucun fournisseur. Et si j'utilise une requête en OU, si je rempli les 2 critères, il me fait pas une intersection mais une union des sélections.

Ya-t-il une solution simple pour que quand un des critères est vide, au lieu de ne rien me selectionner dans la table associée à ce critère, il me sélectionne tout.

Je m'exprime sûrement mal, alors je donne un exemple. J'ai une requête Choix_région, qui me sélectionne toutes les entreprises dans la région dont je rentre le nom. Si je rentre aucun nom, il me sélectionne aucune entreprise. J'aimerais en fait qu'access me fasse l'inverse, et me sélectionne tout si je rentre pas de valeur pour le critère.

Meci d'avance.
 

zeb

Modérateur
Il me semble que tu confonds un formulaire tout fait qui cache avec des requêtes et les requêtes elles-mêmes. Je suis sûr qu'on pourra t'aider si tu nous en dis plus sur ces requêtes, mais ton formulaire, comment veux-tu qu'on le connaisse ? Dans le doute, publie les requêtes ET et les requêtes OU.
 

batchy

Grand Maître
généralement on change la requette pour ça, mais tu peut peut être t'en sortir avec un ''entreprise ~= nom ET ( (pas de Choix_région ) OU (region correspond à Choix_région))
 

Sirguda02

Nouveau membre
Alors, j'ai une requête qui d'abord sélectionne la liste des fournisseurs suivant la région :

Code:
SELECT Fournisseur.codefournisseur, Région.nom_region
FROM Région INNER JOIN (Fournisseur INNER JOIN [Est basé] ON Fournisseur.codefournisseur = [Est basé].codefournisseur) ON Région.coderegion = [Est basé].coderegion
WHERE (((Région.nom_region)=[Nom de la région]));

Ensuite, j'utilise le résultat de cette requête pour ensuite sélectionner suivant l'activité :

Code:
SELECT Fournisseur.[Raison sociale]
FROM Activité INNER JOIN (Fournisseur INNER JOIN ([Choix région] INNER JOIN [A pour activité(s)] ON [Choix région].codefournisseur = [A pour activité(s)].codefournisseur) ON (Fournisseur.codefournisseur = [A pour activité(s)].codefournisseur) AND (Fournisseur.codefournisseur = [Choix région].codefournisseur)) ON Activité.[code activité] = [A pour activité(s)].[code activité]
WHERE (((Activité.[code activité])=[Num activité]));

Mais à mon avis, de toute façon en faisant comme ça ça couille, parce que à la 1ère requête, si je rentre aucun critère de région, il me sort aucun fournisseur.
Donc ça c'est la séquence que je fait pour faire un choix avec un critère ET l'autre.

Pour ce qui est du OU, j'utilise ça :

Code:
SELECT Fournisseur.*
FROM Fournisseur INNER JOIN [Structure table données] ON Fournisseur.codefournisseur = [Structure table données].codefournisseur
WHERE (((Fournisseur.[nom région])=[Formulaires]![Consult_region_act]![Choix_Region])) OR ((([Structure table données].activite)=[Formulaires]![Consult_region_act]![Choix_activ]));

Ca n'a pas la même syntaxe tout à fait parce que c'est pas moi qui l'ai faite et qu'il y a des références au formulaire. Avec cette requête, si je rentre la région et l'activité, ça me fait pas une intersection mais une union, ça me sort les fournisseurs qui sont soit dans la région soit qui pratique l'activité indiqué, ou les 2.

Batchy, comment on écrit en SQL (ou quelle manip' access faut faire ?) pour indiquer ton "(pas de Choix_région ) OU (region correspond à Choix_région)" ?

Merci encore
 

Sirguda02

Nouveau membre
Pardon, mais je voyais pas (et je vois toujours pas) le bouton pour insérer la balise de code.
 

Sirguda02

Nouveau membre
Argh, oui, j'ai vu, mais ça avait l'air fait que pour le C/C++ :(
 

zeb

Modérateur
Remarque TRES pertinente, nonobstant le fait qu'il existe un topik pinné s'intitulant Quelques règles simples à respecter -- /!\ A lire avant de poster !. Merci aux modos de relayer l'information au plus haut lieu..
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 126
Messages
6 717 807
Membres
1 586 365
Dernier membre
matiOs1
Partager cette page
Haut