Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > Contribuez

Contribuez Access : Vos contributions. Postez ici vos codes sources, conseils, astuces et autres propositions. Ce forum n'est pas un forum technique mais destiné aux contributions pour www.developpez.com

Réponse
 
Outils de la discussion
Vieux 30/07/2008, 17h47   #1 (permalink)
Candidat au titre de Membre du Club
 
Date d'inscription: juin 2002
Localisation: Suisse
Âge: 49
Messages: 21
Par défaut [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:



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:
  1. Ouvrez votre application et importer les objets suivants:
    - Tables: USYS_ListeChamps
    - Formulaires: Frm_Recherche, SF_Filtre
    - Requêtes: R_ListeChampsPourListeDéroulante_FrmRecherche

  2. 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])

  3. 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 :
    ' 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  
  4. 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
Fichiers attachés
Type de fichier : zip Frm_RechercheMultiple.zip (54,8 Ko, 37 affichages)

Dernière modification par CarSoftAja ; 31/07/2008 à 09h32
CarSoftAja est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > Contribuez

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide


Fuseau horaire GMT +1. Il est actuellement 02h18.


Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter
Copyright 2000-2008 www.developpez.com - Legal informations