Formulaire Access - ignorer champs vides

Résolu
Arthenos Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -  
Arthenos Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   217
 
bonjour
tu peux utiliser le critere EstPasNull
0
Arthenos Messages postés 37 Date d'inscription   Statut Membre Dernière intervention   3
 
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