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 :
- Créez un formulaire, en mode Création par exemple.
- Placez 2 zones de texte sur ce formulaire.
- Nommez les zones respectivement
txtMontantMin
ettxtMontantMax
. - Enregistrez le formulaire (nommez-le par exemple
frm Paramètres
). - De retour à la requête, remplacez le critère par :
Entre Forms![frm Paramètres]!txtMontantMin Et Forms![frm Paramètres]!txtMontantMax
- 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.
Quelle solution élégante! Bravo et merci
Merci ! 🙂
C’est cool
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).
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
mel > Tu peux dans ce cas taper manuellement le code du bouton, avec un
CurrentDb.Execute "code SQL de la requête"
ouDoCmd.OpenQuery "Nom de la requête"
.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
Bessaci_b3 > La réponse se trouve dans cet autre article. Bons tests !
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.
Patch > Content que ça puisse dépanner ! 🙂
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