Requête Access qui fait ET et OU
Dernière réponse : dans Programmation
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.
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.
Autres pages sur : requete access fait
Lassé par la pub ? Créez un compte
Alors, j'ai une requête qui d'abord sélectionne la liste des fournisseurs suivant la région :
Ensuite, j'utilise le résultat de cette requête pour ensuite sélectionner suivant l'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 :
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
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é :
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 :
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
Lassé par la pub ? Créez un compte
- Contenus similaires :