Bonjour,
Merci bien pour ce topo.
J'ai été amené à réécrire les critères car l'utilisation du caractère générique "*" ne me permettait pas d'avoir les champs vides.
Au final :
- Si la zone de texte Filtre_X est vide, il faut tout afficher, ce qui se fait avec un critère toujours vrai
- Sinon, on filtre tout ce qui contient la chaine saisie
J'ai fini par écrire la requête en SQL. Je donne des exemples pour un champ date et un champ texte :
1 2 3 4 5 6
|
SELECT T_BCO.[Référence BCO], T_BCO.[Date révision] FROM T_BCO
WHERE (((IIf(IsNull(Formulaires!F_Chercher_BCO!Filtre_Référence_BCO),True,(T_BCO.[Référence BCO]) Like ("*" & Formulaires!F_Chercher_BCO!Filtre_Référence_BCO & "*"))))
And ((IIf(IsNull(Formulaires!F_Chercher_BCO!Filtre_Date_min),True,(T_BCO.[Date révision])>=Formulaires!F_Chercher_BCO!Filtre_Date_min))
And (IIf(IsNull(Formulaires!F_Chercher_BCO!Filtre_Date_max),True,(T_BCO.[Date révision])<=Formulaires!F_Chercher_BCO!Filtre_Date_max))) )
ORDER BY T_BCO.[Référence BCO] DESC; |
Les critères sont séparés par AND
Pour chaque critère, si le champs Filtre_X du formulaire est vide, le critère vaut TRUE et ne filtre donc rien.
Sinon, le critère est X Like "*" & Filtre_X & "*"
Voilà, j'espère que ça aidera quelques-uns
Partager