[ACCESS 2010] Requête avec plusieurs critères [Résolu]

Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention - 12 août 2017 à 08:55 - Dernière réponse : Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention
- 14 août 2017 à 09:14
Bonjour,
Dans la base Access que je suis en train de créer , il y a notamment une recherche multi-critères.
Cette recherche se fait grâce à une requête qui utilise 8 champs différents .
Or, la recherche ne donne jamais de résultats , même si cela devrait.
Je vous donne à la fin le SQL de la requête.
Est-ce que cette requête ne me force pas à remplir les 8 critères à la fois ?
Y-a-t-il moyen de ne rentrer qu’un ou deux critères (sur 8) ? les autres critères pouvant être n’importe lesquels.
En résumé , on a :
((Mérimée.[Champs :]) Like "*" & Formulaires![Mérimée - Recherche]![Champs :] & "*")
Table d’origine : Mérimée
Table où on rentre les critères de recherche : Mérimée – Recherche

---------------------------------------------------------------------------------------------
SELECT Mérimée.ID, Mérimée.[FICHE MERIMEE REF :], Mérimée.[Titre :], Mérimée.[Localisation :], Mérimée.[Commune :], Mérimée.[Département :], Mérimée.[Région :], Mérimée.[Aire d'étude :], Mérimée.[Lieu-dit :], Mérimée.[Adresse :], Mérimée.[Dénomination :], Mérimée.[Parties constituantes :], Mérimée.[Epoque de construction :], Mérimée.[Année :], Mérimée.[Architecte :], Mérimée.[Atelier :], Mérimée.[Sculpteurs :], Mérimée.[Patrimoine :], Mérimée.[Historique :], Mérimée.[Description :], Mérimée.[Gros-oeuvre :], Mérimée.[Couverture (matériau)], Mérimée.[Etages :], Mérimée.[Couverture (type) :], Mérimée.Propriété, Mérimée.[Type d'étude :], Mérimée.[Rédacteur(s):], Mérimée.[Références :], Mérimée.[Enquête :], Mérimée.[Photographie 1], Mérimée.[Date de la photographie 1 :], Mérimée.[Auteur 1 :], Mérimée.[Photographie 2], Mérimée.[Date de la photographie 2 :], Mérimée.[Auteur 2 :], Mérimée.[Photographie 3], Mérimée.[Date de la photographie 3 :], Mérimée.[Auteur 3 :], Mérimée.[Photographie 4], Mérimée.[Date de la photographie 4 :], Mérimée.[Auteur 4 :], Mérimée.[Photographie 5], Mérimée.[Date de la photographie 5 :], Mérimée.[Auteur 5 :], Mérimée.[Photographie 6], Mérimée.[Date de la photographie 6 :], Mérimée.[Auteur 6 :]
FROM Mérimée
WHERE (((Mérimée.[Commune :]) Like "*" & Formulaires![Mérimée - Recherche]![Commune :] & "*") And ((Mérimée.[Département :]) Like "*" & Formulaires![Mérimée - Recherche]![Département :] & "*") And ((Mérimée.[Région :]) Like "*" & Formulaires![Mérimée - Recherche]![Région :] & "*") And ((Mérimée.[Dénomination :]) Like "*" & Formulaires![Mérimée - Recherche]![Dénomination :] & "*") And ((Mérimée.[Architecte :]) Like "*" & Formulaires![Mérimée - Recherche]![Architecte :] & "*") And ((Mérimée.[Atelier :]) Like "*" & Formulaires![Mérimée - Recherche]![Atelier :] & "*") And ((Mérimée.[Sculpteurs :]) Like "*" & Formulaires![Mérimée - Recherche]![Sculpteurs :] & "*") And ((Mérimée.[Patrimoine :]) Like "*" & Formulaires![Mérimée - Recherche]![Patrimoine :] & "*"))
ORDER BY Mérimée.[Commune :], Mérimée.[Département :], Mérimée.[Région :], Mérimée.[Dénomination :], Mérimée.[Architecte :], Mérimée.[Atelier :], Mérimée.[Sculpteurs :], Mérimée.[Patrimoine :];
Afficher la suite 
33Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention

18 réponses

Répondre au sujet
castours 2741 Messages postés lundi 18 septembre 2006Date d'inscription 11 décembre 2017 Dernière intervention - 12 août 2017 à 10:39
+1
Utile
4
Lorsque je veux faire des recherches multicriteres je fais un formulaire et un sous formulaire.
Dans le formulaire j' y mets des listes deroulantes independantes issue de tables a clé primaire. Exemple une liste architectes, une liste de sculpteurs.
Relation un a plusieurs avec la table merimée
Lorsque tu as fais des listes deroulantes dans le formulaire tu ajoutes le sous formulaire.
En mode creation du formulaire tu vas dans les proprités du sous formulaire et dans champ pere et fils tu ajoutes le nom des listes deroulantes que tu as créeé.
Si tu veux tu mets ta base dans un lien dans ci joint que tumets sur le site et je fais la manip
Cette réponse vous a-t-elle aidé ?  
Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention - 12 août 2017 à 10:53
Merci de ta réponse et de ta proposition :-)
Peux-tu m'envoyer ton email par MP ? Je t'enverrai alors le lien vers la base sur mon Cloud.
A+
castours 2741 Messages postés lundi 18 septembre 2006Date d'inscription 11 décembre 2017 Dernière intervention > Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention - 13 août 2017 à 13:10
http://fromsmash.com/93624609-8010-11e7-830d-0a39043893bc
Dans ce lien ta base avec 2 formulaire de recherche commune et sculpteur
Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention > castours 2741 Messages postés lundi 18 septembre 2006Date d'inscription 11 décembre 2017 Dernière intervention - 13 août 2017 à 19:46
Merci de ton fichier.
Il me sera bien utile pour comprendre les requêtes multi-critères par formulaire / sous formulaire.
Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention - 12 août 2017 à 15:11
Pour info, voici le lien vers la version actuelle de la base :
https://www.sfrcloud.sfr.fr/web/app/share/invite/jPZNv0c2te
Commenter la réponse de castours
yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 12 août 2017 à 11:05
+1
Utile
6
bonjour,
en effet, tu vérifies les 8 critères, qu'ils soient remplis ou pas.
je pense que tu pourrais simplement faire ainsi, pour chacun des 8 champs:
au lieu de
((Mérimée.[Champs :]) Like "*" & Formulaires![Mérimée - Recherche]![Champs :] & "*")
,
avoir:
(((Mérimée.[Champs :]) Like "*" & Formulaires![Mérimée - Recherche]![Champs :] & "*")
OR
(Formulaires![Mérimée - Recherche]![Champs :] is NULL)
)

cela ferait qu'un critère non rempli serait toujours accepté.
Cette réponse vous a-t-elle aidé ?  
yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention > Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention - 12 août 2017 à 15:12
en effet, tu n'as pas utilisé toutes les parenthèses de ma suggestion.
Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention > yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 13 août 2017 à 09:15
Effectivement, je me mélange un peu. Ceci me semble pas mal , mais j'ai toujours tous les résultats. (je ne met que la partie WHERE)
 WHERE 
(((Mérimée.[Commune :]) Like "*" & Formulaires![Mérimée - Recherche]![Commune :] & "*")
OR
(Formulaires![Mérimée - Recherche]![Commune :] is NULL)
)
AND
(((Mérimée.[Département :]) Like "*" & Formulaires![Mérimée - Recherche]![Département :] & "*")
OR
(Formulaires![Mérimée - Recherche]![Département :] is NULL)
)
AND
(((Mérimée.[Région :]) Like "*" & Formulaires![Mérimée - Recherche]![Région :] & "*")
OR (Formulaires![Mérimée - Recherche]![Région :] is NULL)
)
AND
(((Mérimée.[Dénomination :]) Like "*" & Formulaires![Mérimée - Recherche]![Dénomination :] & "*")
OR
(Formulaires![Mérimée - Recherche]![Dénomination :] is NULL)
)
AND
(((Mérimée.[Architecte :]) Like "*" & Formulaires![Mérimée - Recherche]![Architecte :] & "*")
OR
(Formulaires![Mérimée - Recherche]![Architecte :] is NULL)
)
AND
(((Mérimée.[Atelier :]) Like "*" & Formulaires![Mérimée - Recherche]![Atelier :] & "*")
OR
(Formulaires![Mérimée - Recherche]![Atelier :] is NULL))
AND
(((Mérimée.[Sculpteurs :]) Like "*" & Formulaires![Mérimée - Recherche]![Sculpteurs :] & "*")
OR
(Formulaires![Mérimée - Recherche]![Sculpteurs :] is NULL)
)
AND
(((Mérimée.[Patrimoine :]) Like "*" & Formulaires![Mérimée - Recherche]![Patrimoine :] & "*")
OR
(Formulaires![Mérimée - Recherche]![Patrimoine :] is NULL)
)

où est mon erreur ?
yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention > Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention - 13 août 2017 à 10:49
je me suis intéressé à ta demande "ne rentrer qu’un ou deux critères (sur 8)", et négligé "la recherche ne donne jamais de résultats".
le problème est peut-être avec
Formulaires![Mérimée - Recherche]![Champs :]
, qui serait toujours NULL. ce qui expliquerait le comportement observé.
si tu fais
SELECT Formulaires![Mérimée - Recherche]![Champs :];
pour un champ que tu remplis dans le formulaire de recherche, cela renvoie quoi?
yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention > yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 13 août 2017 à 13:22
j'ai regardé ton fichier, et:
- je ne comprends pas pourquoi tu utilises une table "Mérimée - Recherche" en plus du formulaire de même nom.
- il me semble que les noms des champs dans le formulaire ne se terminent pas par " :".
yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention > yg_be 4106 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 10 décembre 2017 Dernière intervention - 13 août 2017 à 13:41
en modifiant ceci, cela fonctionne, je pense:
- remplacer
Formulaires![Mérimée - Recherche]![Champs :]

par
Forms![Mérimée - Recherche]![Champs]

j'ai donc supprimé les " :" et remplacer Formulaires par Forms
Commenter la réponse de yg_be
HDU 585 Messages postés mercredi 5 juillet 2017Date d'inscription 10 décembre 2017 Dernière intervention - 13 août 2017 à 00:21
0
Utile
Bonjour,

déjà fait ceci, mais en passant par du vba...

Si cela te dit.

A+
Commenter la réponse de HDU
castours 2741 Messages postés lundi 18 septembre 2006Date d'inscription 11 décembre 2017 Dernière intervention - 13 août 2017 à 11:21
0
Utile
2
Bonjour
Desolé je n'ai pas access 2010 que 2007
Je ne peu pas d'aider
castours 2741 Messages postés lundi 18 septembre 2006Date d'inscription 11 décembre 2017 Dernière intervention - 13 août 2017 à 18:56
bonjour
reussi a ouvrir la base
tu as beaucoup de photos qui prennent de la place dans la base.D'ici quelques temps elle sera saturée.
Il faut mettre les photos dans un fichier et creer un lien entre la base et le fichier.
Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention > castours 2741 Messages postés lundi 18 septembre 2006Date d'inscription 11 décembre 2017 Dernière intervention - 13 août 2017 à 19:36
Je suis d'accord avec toi sur le principe.
Néanmoins, il m'arrive de fournir ce fichier à d'autres personnes, comme je l'ai fait sur mon cloud par exemple. Cela me semble plus pratique que de fournir le fichier Access + toutes les photos.
Néanmoins, je te comprend et ce choix n'est pas forcément le bon.
Commenter la réponse de castours
HDU 585 Messages postés mercredi 5 juillet 2017Date d'inscription 10 décembre 2017 Dernière intervention - 13 août 2017 à 21:30
0
Utile
J'ai regardé la base.

Une question me vient à l'esprit : tu veux faire des recherches sur des champs textes ??????

Là c'est pas gagné.
Commenter la réponse de HDU
Methos31 33 Messages postés samedi 17 juin 2017Date d'inscription 14 août 2017 Dernière intervention - 14 août 2017 à 09:14
0
Utile
Merci à tous de votre aide.
Grâce à vos conseils, je vais pouvoir avancer.
Pour ceux qui lirons cette discussion, on peut résumer comme cela.
Une recherche multi-critères peut s'effectuer de trois manières :
- par le langage SQL
- par formulaire / sous formulaire
- par Visual Basic
Commenter la réponse de Methos31