Améliorer une requête paramétrée

Dans une requête, j’ai défini des paramètres du style : Entre [Montant minimum] et [Montant maximum]. Mais cela produit 2 boîtes de dialogue, qui ne sont pas personnalisables. Que faire ?

Solution

La solution consiste à passer par un formulaire, et à remplacer les critères paramétrés par des champs de ce formulaire. Il y a au moins 2 avantages :

  • Tous les paramètres à saisir se retrouvent sur une seule boîte (le formulaire), ce qui est plus ergonomique.
  • Un champ de formulaire peut être plus sophistiqué qu’une simple boîte de saisie : on peut imaginer des cases à cocher, des listes déroulantes, etc.

Voici comment procéder :

  1. Créez un formulaire, en mode Création par exemple.
  2. Placez 2 zones de texte sur ce formulaire.
  3. Nommez les zones respectivement txtMontantMin et txtMontantMax.
  4. Enregistrez le formulaire (nommez-le par exemple frm Paramètres).
  5. De retour à la requête, remplacez le critère par :
    Entre Forms![frm Paramètres]!txtMontantMin Et Forms![frm Paramètres]!txtMontantMax
  6. Pour finaliser tout ça, ajoutez sur le formulaire un bouton de commande.
    En première étape de l’Assistant Bouton de commande, choisissez la catégorie Divers et l’action Exécuter une requête, vous pourrez ensuite choisir la requête concernée.

Notes :

  • Access va traduire la mention Forms par [Formulaires]. Pas grave !
  • La requête ne marche que si le formulaire est ouvert en mode d’utilisation normale (et pas en mode Création).
  • Vous pouvez faire encore mieux en construisant un état à partir de la requête. Faites en sorte, dans ce cas, que votre bouton de commande ouvre l’état au lieu d’exécuter la requête. L’état s’ouvre, évalue la requête au démarrage, laquelle requête est filtrée via le formulaire. Magique non ?
  • Si le nombre de paramètres est important, et que vous souhaitez faire des tests plus approfondis (« si tel critère n’est pas rempli, alors… »), vous devriez plutôt jeter un oeil sur les instructions OpenForm et OpenReport.

Vous aimerez aussi...

11 réponses

  1. Renaud dit :

    Quelle solution élégante! Bravo et merci

  2. Roberto dit :

    C’est cool

  3. Hervé Inisan dit :

    mel > En général, on ne limite pas le nombre d’enregistrements d’une table. Par contre, on peut limiter le nombre d’enregistrements extraits d’une table par requête (si c’est le cas, consulte cet article).

  4. mel dit :

    Merci hervé, j’ai essayé ça marche. Mais un petit souci, je voudrais limité le nombre d’enregistrement de ma table à 5 par exemple comment y procéder? Je sais que c’est pas lié seulement aidé m

  5. Hervé Inisan dit :

    mel > Tu peux dans ce cas taper manuellement le code du bouton, avec un CurrentDb.Execute "code SQL de la requête" ou DoCmd.OpenQuery "Nom de la requête".

  6. mel dit :

    Merci hervé pour ce que vs faites, j’ai essayé cette action sur une requete suppression mais le bouton de commande n’a pas vue la requete

  7. Hervé Inisan dit :

    Bessaci_b3 > La réponse se trouve dans cet autre article. Bons tests !

  8. Bessaci_b3 dit :

    Je souhaite faire un état paramétré c’est à dire j’ai une base de donnée, à l’intérieur je saisi des commandes mais je veux imprimer chaque commande toute seule, chaque fois que je fait un état sur une commande, c’est toute les commandes qui s’affiche, et moi je souhaite afficher la commande que je souhaite.
    Merci d’avance pour toutes vos réponses.

  9. Hervé Inisan dit :

    Patch > Content que ça puisse dépanner ! 🙂

  10. Patch dit :

    Slt,
    Merci pour ta super solution, ca nous a sorti d’un projet informatique qui commençait à prendre l’aspect d’un cauchemar. Avec cette astuce nous réussiront à mettre en place de nombreuses fonctionnalités prévues dans notre cahier de charge
    Merci encore

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *