Formulaire Access - ignorer champs vides

Résolu/Fermé
Arthenos Messages postés 37 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 25 octobre 2013 - 2 nov. 2011 à 07:46
Arthenos Messages postés 37 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 25 octobre 2013 - 7 nov. 2011 à 09:31
Bonjour,

Je suis en train de réaliser une base de données pour les mandats de notre bureau qui permet aux employée de facilement retrouver des données d'anciens mandats.
J'utilise une requête qui va chercher dans un formulaire les critères de recherche qui ont étés rentrés et va afficher tout ce qui leur correspond dans la base de donnée.

J'ai une dizaine de champs possible pour la recherche mais si les gens en remplissent plus d'un ça pose problème:

Avec des OR comme condition ils me sort tout ce qui correspond à une des entrées que l'utilisateur à tapée (ce qui est normal) et ignore les champs vides.
Avec des AND il ne m'affiche rien ça il considère que si l'utilisateur rempli que 2 champs les 9 autres doivent impérativement être vide.

Je souhaiterai pouvoir mettre des AND mais que les champs vide ne soit pas pris en compte afin d'avoir comme résultats les mandats qui ont tout les critères entrés par l'utilisateur et pas les autres.

Je suis sous Access 2007 pour si ça à une influence.

Voici le code de ma requête:

SELECT *
FROM Mandats
WHERE
((([Formulaires]![Recherche_mandat]![numero de mandat])=[Mandats]![no_mandat])) OR ((([Formulaires]![Recherche_mandat]![liste_commune])=[Mandats]![commune])) OR ((([Formulaires]![Recherche_mandat]![date du mandat])=[Mandats]![date_creation])) OR
((([Formulaires]![Recherche_mandat]![rue ou lieu-dit])=[Mandats]![lieu_mandat])) OR ((([Formulaires]![Recherche_mandat]![numero de parcelle])=[Mandats]![no_parcelle])) OR ((([Formulaires]![Recherche_mandat]![nom du client])=[Mandats]![client])) OR ((([Formulaires]![Recherche_mandat]![nom du mandataire])=[Mandats]![mandataire])) OR ((([Formulaires]![Recherche_mandat]![liste de type])=[Mandats]![type_mandat])) OR ((([Formulaires]![Recherche_mandat]![description mandat])=[Mandats]![description])) OR
((([Formulaires]![Recherche_mandat]![coord_est])=[Mandats]![coord_est])) OR ((([Formulaires]![Recherche_mandat]![coord_nord])=[Mandats]![coord_nord]))
ORDER BY Mandats.date_creation DESC;

Merci d'avance

Arthenos

2 réponses

castours Messages postés 2955 Date d'inscription lundi 18 septembre 2006 Statut Membre Dernière intervention 31 août 2019 217
3 nov. 2011 à 11:32
bonjour
tu peux utiliser le critere EstPasNull
0
Arthenos Messages postés 37 Date d'inscription mercredi 11 novembre 2009 Statut Membre Dernière intervention 25 octobre 2013 3
7 nov. 2011 à 09:31
J'ai reussi en utilisant des condition de type EstNull, voila ce que ca donne :

SELECT *

FROM Mandats

WHERE
(((Formulaires!Recherche_mandat![numero de mandat])=Mandats!no_mandat Or (Formulaires!Recherche_mandat![numero de mandat]) Is Null) And

((Formulaires!Recherche_mandat!liste_commune)=Mandats!commune Or (Formulaires!Recherche_mandat!liste_commune) Is Null) And

...

((Formulaires!Recherche_mandat!coord_nord)=Mandats!coord_nord Or (Formulaires!Recherche_mandat!coord_nord) Is Null))

ORDER BY Mandats.date_creation DESC;
0