1 votes

Automatisation des requêtes Access 2007 (modification d'un critère)

J'ai donc 6 requêtes et je veux les exécuter toutes une fois à la fin de chaque mois. (Je m'y connais un peu en SQL mais elles sont simplement construites à l'aide de la vue de conception d'Access). Donc, dans les prochains jours, je vais peut-être exécuter les 6 requêtes pour le mois de mai, puisque le mois de mai vient de se terminer. Je ne veux que les données du mois qui vient de se terminer, donc la requête a pour critère le nom du mois (par exemple, mai). Cela ne prend pas énormément de temps de changer tous ces critères chaque mois, mais y a-t-il un moyen d'automatiser cela ? Actuellement, ils sont tous définis sur avril et je veux les changer tous en mai lorsque je les exécuterai dans quelques jours. Et chaque mois, j'aimerais taper le mois (peut-être dans une zone de texte d'un formulaire ou autre, si vous connaissez un meilleur moyen) une seule fois et faire en sorte que les 6 requêtes soient modifiées, sans avoir à ouvrir manuellement les 6, à faire défiler jusqu'au bon champ et à modifier les critères.

Note (sur VBA) : J'ai utilisé Excel VBA donc je connais les bases de VBA mais je ne connais pas vraiment quelque chose de spécifique à Access (autre que de voir du code quelques fois). De plus, d'autres personnes qui ne connaissent rien à Access VBA utiliseront ce programme. Je pense donc avoir trouvé une solution similaire question/réponse qui pourrait le faire en VBA, mais je préfère le faire d'une autre manière. Si la requête doit être légèrement remaniée ultérieurement, probablement par quelqu'un qui ne connaît pas du tout Access VBA, il serait bon d'avoir une solution n'impliquant pas VBA, si cela est possible.

2voto

Dave Becker Points 2638

Il existe un moyen simple pour que la requête demande le mois lorsque vous l'exécutez : Dans la requête, mettez [Enter Month] à l'endroit où se trouve le nom du mois.

enter image description here

Lorsque la requête s'exécute, une boîte de dialogue apparaît pour saisir le mois. Vous pouvez mettre le texte que vous voulez entre les crochets - il n'est pas nécessaire de dire "mois" ; cela définit simplement ce que la boîte de dialogue dira. Cette technique s'appelle une "requête paramétrique".

enter image description here

L'exécution des six requêtes en une seule étape nécessitera du code VBA, mais un code très simple. Vos utilisateurs finaux n'ont pas besoin de connaître quoi que ce soit au sujet du VBA - il leur suffit d'ouvrir un formulaire et de cliquer sur un bouton.

Créez un formulaire, mettez un bouton dessus. Dans la liste des propriétés de ce bouton, choisissez l'onglet Événements, puis l'événement "On Click". Cliquez sur le bouton "..." de l'événement "On Click".

enter image description here

Cela ouvre la fenêtre de code VBA avec le curseur au bon endroit - Private Sub Command0_Click - où Command0 est le nom du bouton. Entrez le code comme indiqué...

enter image description here

Remplacez les noms corrects de vos requêtes et répétez la ligne de code autant de fois que nécessaire. En ouvrant le formulaire et en cliquant sur le bouton, toutes les requêtes seront exécutées en même temps.

La prochaine étape

L'amélioration finale serait d'entrer le paramètre une seule fois et de l'appliquer automatiquement à toutes les requêtes. Cela nécessite plusieurs étapes.

Dans la fenêtre de code VBA, créez un code "Module". Faites un clic droit dans le volet Projet de la fenêtre et choisissez Insertion/Module :

enter image description here

Dans le nouveau module, ajoutez ce code :

enter image description here

gstrMonth est une chaîne de variables globales pour contenir le nom du mois. La fonction GetMonth sera utilisée dans les requêtes pour récupérer cette valeur.

Maintenant changez le code de Form1 en ceci :

enter image description here

Le sous "AskForMonth" affiche une boîte de dialogue permettant à l'utilisateur de saisir un nom de mois. Cette entrée est affectée à la variable gstrMonth.

enter image description here

Dans le code de Command0 (bouton), nous ajoutons AskForMonth avant l'exécution de la requête. Encore une fois, répétez la ligne "DoCmd" pour chaque requête avec les noms de requête corrects.

La dernière étape consiste à remplacer le paramètre dans les requêtes par un appel à la fonction "GetMonth". Au lieu de [Enter Month] dans les critères de la requête, mettez "GetMonth()".

enter image description here

J'espère que cela vous encourage à utiliser certaines des capacités de VBA pour automatiser vos tâches Access !

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X