Bonjour,
Je suis autodidacte et je contribue à la démarche OpenAcadémie, qui crée des logiciels pour faciliter la vie aux personnels administratifs -et autres- des collèges et des lycées. J'en arrive à poser des questions ici après avoir échoué plusieurs jours à exploiter ce que je trouve dans les discussions existantes. C'est probablement parce que je manque trop encore de vocabulaire et de pratique, mais promis je m'efforce de comprendre vite !
Soit un logiciel qui sert à imprimer les cartes de lycéen. Tout fonctionne bien, et je voudrais une petite fonction pour afficher la date, si elle existe, à laquelle une carte a déjà été imprimée. Ainsi on évite d'imprimer un doublon, ou on le fait en toute connaissance de cause.
J'ai créé une table "journalisation" comprenant, outre une clé primaire pour être tranquille, on a la clé de l'élève de la table des élèves, et la date. Plus simple y a pas. Dans le formulaire où l'on choisit l'élève dont on veut imprimer la carte, j'ai fait un petit sous-formulaire rattaché à cette table, avec l'affichage de ces deux informations. Et le bouton qui déclenche l'impression d'une carte a été agrémenté du code VBA suivant, trouvé sur le web :
... et ça marche ! MAIS... si j'imprime plusieurs fois de suite la même carte, la date affichée reste la même. En fait, le code ci-dessus va créer dans la table de journalisation une nouvelle ligne avec le même numéro d'élève, et une autre date. Et mon sous-formulaire affiche toujours la même !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 'Ajouter une ligne dans la table-journal des éditions de cartes ' Variables Dim rst As DAO.Recordset ' Ouvrir la table en lecture/écriture Set rst = CurrentDb.OpenRecordset("table_journalisation", dbOpenDynaset) ' Créer un enregistrement dans la table rst.AddNew ' Alimenter les champs rst("Id_Elève") = Id_Elève rst("Date_dernière_édition_carte") = Now() ' Valider rst.Update Set rst = Nothing
J'ai exploré plusieurs pistes, et je n'arrive à en faire marcher aucune, toutes mes tentatives aboutissent au bogue :
- faire afficher la plus récente des dates concernant cet élève dans le sous-formulaire : je n'ai pas de piste pour obtenir ce comportement
- effacer l'enregistrement existant sur ce numéro d'élève avant d'en écrire un nouveau (seule la dernière date m'intéresse, je n'ai pas spécialement envie de garder une trace à l'infini de toutes les impressions) : je ne sais pas comment dire au code d'effacer la ligne avec le numéro de cet élève-là
- mettre à jour l'enregistrement existant au lieu d'en créer un nouveau : même problème pour accéder à cette ligne-là précisément
- pour les deux cas précédents, j'ai en plus le problème de ne pas parvenir correctement à utiliser des If-Then/Else : ça devrait marcher, mais au fond, puisque les commandes que je veux créer ne marchent pas, pourquoi se laisseraient-elles manier gentiment par les conditions ?
Bref, je craque un peu. Et il y a pis, dans le message suivant.
Partager