1 pièce(s) jointe(s)
[Sources] Formulaire de recherche multicritères
Bonjour,
Je vous propose un formulaire de recherche multicritères qui ressemble beaucoup à la grille de création de requête, non seulement dans sa présentation, mais également dans son utilisation.
Les recherches peuvent s'effectuer sur n'importe quel champ d'une table ou requête source et il est bien entendu possible d'utiliser les caractères génériques '*' ou '?' dans les recherches. Le formulaire se présentera comme ceci:
http://www.carsoftaja.ch/fichiers%20...formulaire.jpg
On voit qu'il y a 4 critères possibles dans le formulaire exemple ci-dessus, mais ce nombre est très facilement modulable, il suffit de modifier le dimensionnement de 2 variables de type tableaux.
Pour utiliser ce formulaire dans votre application, procédez comme suit:
- Ouvrez votre application et importer les objets suivants:
- Tables: USYS_ListeChamps
- Formulaires: Frm_Recherche, SF_Filtre
- Requêtes: R_ListeChampsPourListeDéroulante_FrmRecherche
- Ouvrez la table USYS_ListeChamps et effacez tous les enregistrements qu'elle contient. Ensuite insérez de nouveaux enregistrements en fonction des champs de la table ou requête qui servira de source au formulaire de recherche
- [N°] est libre, mais doit être unique.
PS: Il est également possible lors de la création de mettre le type de ce champ sur NuméroAuto au lieu de Numérique/entier long si vous ne désirez pas entrer à chaque fois le numéro. J'ai pour ma part choisi ce type 'Numérique' afin de pouvoir librement choisir mes numéros, de façon par exemple à utiliser cette colonne comme ordre de tri dans la liste déroulante qui affichera la liste de ces champs
- [FieldName] doit correspondre aux noms des champs tels qu'ils figurent dans la table source ( dans mon exemple 'Clients').
IMPORTANT: Si un nom de champ possède un espace, par exemple "Code postal", il faut le mettre entre crochet, comme ceci: [Code postal]
Il est également possible d'introduire des expressions qui pourront servir pour affiner une recherche.
Par exemple ma table "Clients" possède un champ "Date naissance" de type jj.mm.aaaa. Mais je souhaite que l'utilisateur puisse faire des recherches uniquement sur le mois ou l'année de cette date de naissance. Il suffit donc d'introduire les expressions suivantes: Month([Date Naissance]) et Year([Date Naissance]).
Vous pouvez ainsi créer n'importe quelle expression, pour autant quelles soient conformes au langage SQL.
On pourrait par exemple également utiliser les expressions suivantes:
- Left(Adresse,2) / 2 premiers caractères du champ Adresse
- Len (Téléphone) / longueur du champ Téléphone
- [Type] contient une constante de type DAO DataTypeEnum qui correspond au type du champ. Les valeurs possibles sont:
'DataTypeEnum DAO acceptées dans BuildCriteria
1 = Oui/Non (dbBoolean)
2 = octet (dbByte)
3 = entier (dbInteger)
4 = entier long (dbLong)
5 = monétaire (dbCurrency)
6 = réel simple (dbSingle)
7 = réel double (dbDouble)
8 = date (dbDate)
9 = binaire (dbBinary)
10 = texte (dbText)
11 = binaire 2 dbLongBinary)
12 = mémo (dbMemo)
15 = GUID (dbGUID)
16 = numérique HP (dbBigInt)
17 = binaire 2 (dbVarBinary)
18 = texte (dbChar)
19 = numérique (dbNumeric)
20 = décimal (dbDecimal)
21 = flottant (dbFloat)
22 = heure (dbTime)
23 = heure (dbTimeStamp)
Le champ de la table est sous forme de liste déroulante, avec tous les types possibles à disposition. Cela facilite l'introduction des données
-[Description] contient le texte qui sera affiché dans la liste déroulante du formulaire de recherche. Par exemple "Mois de naissance" est plus parlant pour l'utilisateur que "Month([Date Naissance])
- Ouvrez le formulaire Frm_Recherche en mode création et allez dans son code. Adapter la variable vSource à la table ou requête source.
Code:
1 2 3 4
| ' Variables à modifier
Dim expressionET(1 To 4) ' A dimensionner selon le nombre maximum de critères
Dim expressionOU(1 To 4) ' A dimensionner selon le nombre maximum de critères
Const vSource = "Clients" ' Nom de la table ou requête source du formulaire de recherche |
- Contrôler que la référence à la bibliothèque Microsoft DAO soit référencée dans votre application.
Le code SQL de la recherche est enregistré à chaque fois dans la requête "filtre" qui est créée au cas où elle n'existe pas encore. Ainsi il suffit de prendre cette requête comme source pour utiliser les résultats de la recherche.
Si vous avez des difficultés pour comprendre l'utiisation ou le fonctionnement de ce formulaire une aide est disponible ici formulaire de recherche multicritère