Home

VBA pour Access 2007 & 2010

image

Contents

1. RemplitChamps Sub RemplitChamps Dim NomC As String ff As Object For Each ff In Rst Fields NomC ff Name If NomC lt gt N And NomC lt gt Cotis jour Then ff Value DonMemb NomC Next End Sub ModifMembre Sub ModifMembre Dernier False While Not Dernier Set DonMemb CreateObject Scripting Dictionary Set Cnx CurrentProject Connection Set Rst New ADODB Recordset Satisf False Mode 1 DoCmd OpenForm F Membre acFormEdit acDialog If Satisf Then RemplitChamps Rst Update End If DonMemb RemoveAll Set DonMemb Nothing If Rst State lt gt 0 Then Rst Close Cnx Close Set Rst Nothing Set Cnx Nothing Wend End Sub La structure est semblable NouvMemb mais certaines instructions comme l ouverture du Recordset ne sont plus la elles sont dans le module de classe car la recherche de l enregistrement a modifier ou supprimer est en plusieurs pisodes s par s par clic sur Suivant La diff rence importante est la valeur donn e a la variable Mode une erreur ou l oubli de cette instruction emp cherait le fonctionnement correct Notez aussi que la fermeture du Recordset est conditionnelle en effet il peut tre ferm par B_Ver_Click et si on essaie de le fermer une 2 fois on se paie un message d erreur Nous sommes parvenus au fichier AmisAnimaux_ 3 accdb Pour essayer quelques
2. VBA pour Access 2007 amp 2010 Guide de formation avec cas pratiques Daniel Jean David EYROLLES a Gestion d une association tape 1 Fichier HTM tape 2 Nouveau membre tape 3 Modification Suppression Pour aller plus loin TAPE 1 FICHIER HTM 1 LE PROBL ME Nous allons g rer l association des Amis des Animaux c est dire inscrire les nouveaux membres modifier leurs donn es en supprimer etc Comme utilisation nous allons cr er la page WEB qui affichera le tableau des membres D autres utilisations sont envisageables comme comptabiliser les cotisations etc nous les laissons de c t La base de donn es AmisAnimaux accdb contiendra une seule table Membres Dans la premi re tape nous produisons le fichier htm partir de la BD telle qu elle est Les tapes suivantes feront voluer la base Dans l tat de d part AmisAnimaux_00 accdb du fichier que vous avez en t l chargement il n y a que la table Membres avec les donn es suivantes Membres x N Nom Pr nom Adresse 1 x Adresse 2 AERE Ville z Tel 7 eMail Cotis jour 1 DUCK Donald Le Bois Sacr 1 rue du D barquement 14000 Caen 02 20 10 15 02 E 2 DUPONT Georges KerMag 20 Av Joffre 44500 La Baule 0240602000 gdupont mail fr E 3 DURAND Charles 12 rue de la Lune 75003 Paris 0603897881 cdurand yahoo com E 4 FRICOTIN Bibi 2 rue de Bellevue 75019 Paris T 5 GUIGNOL Albert 13 Traboule Dogue 69
3. ralisation Nous cr ons une fonction bool enne TestSQL qui a le texte d une requ te comme argument et qui renvoie vrai s il existe des enregistrements satisfaisant la requ te Function TestSQL chSQL As String As Boolean Dim Cm As New ADODB Command Res Set Cm ActiveConnection CurrentProject Connection Cm CommandType adCmdText Cm CommandText chSQL Set Res Cm Execute If Res 0 Value lt gt 0 Then TestSQL True Else TestSQOL False Set Cm Nothing End Function Private Sub B Ver Click Dim Ch As String Rep If Mode 0 Then Ch select count Nom from Membres where Nom Nm and Prenom Pr wy Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 2 NOUVEAU MEMBRE If TestSQL Ch Then Rep MsgBox Ce nom et pr nom sont d j pr sents vbCr _ voulez vous tout de m me entrer ce membre vbYesNo vbExclamation If Rep vbYes Then B OK Enabled True B OKDern Enabled True Else B OK Enabled True B OKDern Enabled True End If Else laiss vide pour le moment End If End Sub Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 3 MODIFICATION SUPPRESSION 1 CONSTRUIRE LE FORMULAIRE Copiez AmisAnimaux_2a accdb en AmisAnimaux_3 accdb sur lequel vous allez travailler Pour la modification le probl me est de trouver l enregistrement modifier On fait la recherche sur le nom lorsqu on a trouv une concordance on affiche l en
4. If Next End Sub Sub VideBDi Dim NomTB As String ct As Control DonMemb RemoveAll For Each ct In Controls L bare Cie Nams 3 18 U when NomTB Mid ct Name 4 ct SetFocus Cee xia eel End If Next End Sub Tsoft Eyrolles VBA pour Access 2007 amp 2010 183 TAPE 3 MODIFICATION SUPPRESSION Sub RemplitBDi Dim NomTB As String ct As Control For Each ct In Controls Tt heft CE Name 3 TB Then NomTB Mid ct Name 4 ct SetFocus ct Text Nz DonMemb NomTB Io Lie Next End Sub Function VerNomPren As Boolean ic Qin DU Ore 27 0 tbe MsgBox Il faut un nom et un pr nom VerNomPren False Else VerNomPren True End If End Function Private Sub B Annul Click Dernier False Satisf False DoCmd Close acForm Me Name acSaveNo End Sub Private Sub B Correct Click B Suppr Enabled True B OK Enabled True B OKDern Enabled True End Sub Private Sub B OK Click If Not VerNomPren Then Exit Sub CaptureDon Dernier False Satisf True DoCmd Close acForm Me Name acSaveNo End Sub Private Sub B OKDern Click If Not VerNomPren Then Exit Sub CaptureDon Dernier True SACS CS Dep DoCmd Close acForm Me Name acSaveNo End Sub Private Sub B Quit Click Dernier True Satisf False DoCmd Close acForm Me Name acSaveNo End Sub Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 3 MODIFICATION SUPPRESSION Private Sub B Supp
5. NbRub Value eMail part If Rub Then Rub amp nbsp Else _ Rub lt a href mailto Rub seMail lt a gt Print 1 lt td gt Rub lt tds vbCr Diane weil Testers tk For Rst MoveNext Next Lig Print 1 lt table gt vbCr Print 1 lt body gt lt html gt vbCr Close 1 Rst Close Cnx Close Set Rst Nothing Set Cnx Nothing End Sub La proc dure GenerHTM commence par appeler InitGen Ensuite chaque ligne d criture html se fait par un print de la chaine de caract res voulue on termine par vbCr et pour avoir un parfait contr le des lignes Si la rubrique est vide on met amp nbsp l espace en HTML pour assurer la continuit de la bordure Pour la rubrique eMail la chaine est lt a href mailto adresse gt eMail lt a gt remarquez les doubles guillemets pour incorporer un guillemet On utilise les variables Lig num ro de ligne Kol num ro de rubrique colonne et Rub le texte de la rubrique Celui ci est obtenu dans l enregistrement courant du Recordset partir du champ correspondant au nom de rubrique Le lt b gt lt b gt entourant l criture de chaque nom de rubrique le met en gras Le nom du fichier Web produit est fix Membres htm dans l instruction Open Une telle chose est en principe a viter on doit param trer au maximum Dans notre exemple on pourrait introduire une variable NomFichWeb obtenue par une InputBox Nom
6. OpenForm F Membre acFormAdd acDialog If Satisf Then Rst AddNew For Each ff In Rst Fields Nom ff Name If NomC lt gt N And NomC lt gt Cotis jour Then ff Value DonMemb NomC Next Rst Update End If DonMemb RemoveAll Set DonMemb Nothing Rst Close Cnx Close Set Rst Nothing Set Cnx Nothing Wend End Sub La structure de NouvMemb est en fait simple Dernier False While Not Dernier Tant qu on n a pas entr le dernier de la s rie Set DonMemb Pr parer le dictionnaire des donn es Rst Open lOuvrir le Recordset DoCmd OpenForm Afficher le formulaire If Satisf Then Si on a obtenu une donn e correcte Rst AddNew Cr e nouvel enregistrement For Each ff Remplissage des champs E Next Rst Update Installe le nouvel enregistrement End If Fait le m nage en vue d un ventuel enregistrement suivant Wend La boucle For Each ff suit exactement le sch ma de remplissage des champs vu au chapitre 10 puisque les TextBox ont t nomm es suivant le mod le TB_ lt nom du champ gt Sauvegardez le fichier sous le nom AmisAnimaux 2 accdb avec toujours la m me pr caution d avoir conserv une copie intacte des fichiers originaux t l charg s Pour tester le programme l tape 2 vous cliquez sur le bouton Nouveau membre vous entrez une s rie de nouveaux membres clic sur apr s chaque et sur OK Dernier apr s le dernier vous devez v rifier que les donn es
7. des membres sont bien entr es 4 QUELQUES AM LIORATIONS Nous proposons deux l gers changements dans le code qui vont servir en vue de la 3 tape Cela va constituer le fichier AmisAnimaux_2a accdb Dans NouvMembre la boucle de remplissage des champs For Each ff va servir plusieurs fois Donc nous l implantons dans une proc dure RemplitChamps et la partie concern e du module est maintenant Tsoft Eyrolles VBA pour Access 2007 amp 2010 179 TAPE 2 NOUVEAU MEMBRE RemplitChamps Sub RemplitChamps Dim NomC As String ff As Object For Each ff In Rst Fields Nom ff Name If NomC lt gt N And NomC lt gt Cotis a jour Then ff Value DonMemb NomC Next End Sub oo NouvMembre Sub NouvMembre Dernier False While Not Dernier Set DonMemb CreateObject Scripting Dictionary Set Cnx CurrentProject Connection Set Rst New ADODB Recordset Rst Open Membres Cnx adOpenDynamic adLockOptimistic Satisf False Mode 0 DoCmd OpenForm F Membre acFormAdd acDialog If Satisf Then Rst AddNew RemplitChamps Rst Update End If DonMemb RemoveAll Set DonMemb Nothing Rst Close Cnx Close Set Ret Nothing Set Cnx Nothing Wend End Sub De m me dans B Ver Click du module associ au formulaire la partie de test de la pr sence du nom et pr nom est susceptible de g n
8. ils n ont pas la m me adresse et alors on active aussi les boutons OK Si la r ponse est non l utilisateur doit changer le nom et ou le pr nom ou bien annuler 176 Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 2 NOUVEAU MEMBRE Dim Nm As String Pr As String Sub CaptureDon oie iyacla Cie iin emgeet If heft ct Name 3 TB Then NomTB Mid ct Name 4 ct SetFocus TX We ele ere VU DonMemb Add NomTB Tx End If Next End Sub Function VerNomPren As Boolean ie Nm UN Ore Br 00 The MsgBox Il faut un nom et un pr nom VerNomPren False Else VerNomPren True End If End Function Private Sub B Annul Click Dernier False Satisf False DoCmd Close acForm Me Name acSaveNo End Sub Private Sub B OK Click If Not VerNomPren Then Exit Sub CaptureDon Dernier False Satisf True DoCmd Close acForm Me Name acSaveNo End Sub Private Sub B OKDern Click If Not VerNomPren Then Exit Sub CaptureDon Dernier True Satisf True DoCmd Close acForm Me Name acSaveNo End Sub Private Sub B Quit Click Dernier True Satisf False DoCmd Close acForm Me Name acSaveNo End Sub Tsoft Eyrolles VBA pour Access 2007 amp 2010 Dim NomTB As String ct As Control Tx As String 177 TAPE 2 NOUVEAU MEMBRE Private Sub B Ver Click Dim Cm As New ADODB Command Res Rep If Mode 0 Then Set Cm ActiveConnection CurrentProject Conn
9. nom et pr nom sont d j pr sents vbCr _ True 185 TAPE 3 MODIFICATION SUPPRESSION If Rst EOF Then MsgBox Plus d enregistrements EnCours False VideBDi Rst Close Exit Sub End If oc 27 Not EnCours RecupChamps RemplitBDi ac 17 Mode End Sub Private Sub Form Current Nm Woe Pr Wo If Mode 0 Then Me Caption Nouveau membre E Wise eer jet wera ere B Correct Enabled False B Correct Visible False B Suppr Enabled False B Suppr Visible False Else Me Caption Modification Suppression membre B Ver Caption Chercher Suivant B Correct Enabled True B Correct Visible True B Suppr Enabled False B Suppr Visible True EnCours False End If End Sub Private Sub TB Nom Exit Cancel As Integer Nm Nz TB Nom Text B OK Enabled False B OKDern Enabled False End Sub Private Sub TB Pr nom_Exit Cancel As Integer Pr NZ TE Pr nom Text B OK Enabled False B OKDern Enabled False End Sub 3 PROCEDURE MODIFMEMBRE ET ANNEXES SSeS SSS SSS SSS SSS SSS SSS SSS SSS SSS SS SS SS SSS SSeS SS SSS Sas RecupChamps Sub RecupChamps Dim NomC As String ff As Object DonMemb RemoveAll For Each ff In Rst Fields Nom ff Name If Nom lt gt N And NomC lt gt Cotis jour Then DonMemb Add NomC ff Value Next End Sub Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 3 MODIFICATION SUPPRESSION
10. tr s semblables avant de fermer le formulaire elles fixent en cons quence les bool ens sur lesquels est bas e la gestion Dernier est mis vrai pour les boutons qui terminent une s rie B_OKDern et B_Quitter Satisf est mis faux par les boutons d annulation et vrai par les boutons OK Les boutons OK appellent la proc dure CaptureDon qui transf re les donn es des contr les dans le tableau DonMemb En effet si on clique sur OK c est que les donn es entr es dans les contr les sont correctes Le tableau Dictionnaire DonMemb sert les m moriser pour r cup ration dans Module 1 il est g r comme vu au chapitre 10 dans la section sur le dictionnaire de donn es Mais avant d appeler CaptureDon les routines font appel la fonction bool enne VerNomPren qui prend la valeur False s il manque soit le nom soit le pr nom dans ce cas inutile de capturer les donn es et on ne ferme pas le formulaire La routine B_ Ver Click est la plus d licate Pour le moment nous n implantons que la branche Mode 0 Pour v rifier s il y a d j un membre ayant la fois m me nom et m me pr nom on cr e un objet commande qui ex cutera une requ te de comptage des enregistrements satisfaisant cette condition Le r sultat de la requ te est Res 0 Value Si ce r sultat est diff rent de 0 on demande l utilisateur s il veut tout de m me entrer ce membre deux membres peuvent avoir m mes nom et pr nom esp rons qu
11. 001 Lyon 04 78 25 00 00 E 6 MOUSE Mickey Impasse du Fromage 38000 Grenoble mmouse noos fr A HHRHH CT La rubrique lt Cotis jour gt est pr vue mais elle ne sera pas g r e ici A part N qui est en entier incr mentation automatique tous les champs sont en texte Pour obtenir le fichier AmisAnimaux_0O accdb vous cr ez le formulaire nomm Menu qui propose un bouton par fonctionnalit comme sugg r au chapitre 10 e i ee Zg Menu Association des Amis des Animaux Nouveaux Membres Modif Supp Quitter On voit sur la figure qu apr s l explication succincte c t de chaque bouton figure le nom de la proc dure associ e dans Modulei pour le moment ces proc dures sont toutes vides Voici le module de classe du formulaire 170 Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 1 FICHIER HTM Private Sub B HIM Click GenerHTM End Sub Private Sub B ModifSupp Click ModifMembre End Sub Private Sub B NouvMemb Click NouvMembre End Sub Private Sub B Quit Click DoCmd Close acForm Menu acSaveNo DoCmd Quit acQuitSaveAll End Sub Utilisation des fichiers t l charg s Chaque cas pratique a son dossier Les fichiers des cas pratiques ont leur nom termin par le n d tape Pour reproduire le passage de l tape n n 1 vous copiez le fichier n dans un nouveau r pertoire ainsi que les fichiers auxiliaires ventuels Ensuite copiez le fichier n
12. D barquement 14000 Caen 02 20 10 15 02 2 DUPONT Georges Ker Mag 20 Av Joffre 44500 La Baule 02 40 60 20 00 eMail 3 DURAND Charles 12 rue de la Lune 75003 Paris 06 03 89 78 81 eMail 4 FRICOTIN Bibi 2 me de Bellevue 75019 Paris 5 GUIGNOL Albert 13 Traboule Dogue 69001 Lyon 04 78 25 00 00 7 MOUSE Mickey Impasse du Fromage 38000 Grenoble eMail Wee Ree S SSeS SSS SSS SS SS 55 SSS SSS SS SS Se SSeS SSeS SS SS S5555 GenerHTM Sub GenerHTM InitGen Open Chem Membres htm For Output As 1 Print 1 lt html gt lt head gt vbCr D but page Print 1 lt title gt Les Amis des Animaux lt title gt vbCr Print 1 lt head gt lt body gt lt center gt vbCr Print 1 lt h2 gt Membres de l Association lt h2 gt vbCr Print 1 lt h2 gt Les Amis des Animaux lt h2 gt lt center gt vbCr Print 1 lt table border width 95 gt vbCr D but tableau seine wil Metro CE For Kol 1 To NbRub Noms de rubriques Print 1 lt td gt lt b gt NomsRub Kol lt b gt lt td gt vbCr Next Kol Daae wil Tefen io Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 1 FICHIER HTM Rst MoveFirst For Lig 1 To NbLig ei sil Metro a CES For Kol 1 To NbRub 1 Les rubriques Rub CStr Nz Rst Fields NomsRub Kol Value ie RG VU maga Rul Itzeg zU Print 1 lt td gt Rub lt td gt vbCr Next Kol Rub CStr Nz Rst Fields NomsRub
13. FichWeb InputBox Nom du fichier Web a cr er Membres htm Nous vous laissons l implantation complete titre d exercice compl mentaire Notez aussi dans ce contexte qu on ne se pr occupe pas de savoir s il existe d j un fichier htm de m me nom dans le dossier si c est le cas ce fichier est cras et remplac par le fichier que vous cr ez sans qu il y ait le moindre message pour vous avertir Dans ce cas le fichier htm refl tera l tat actuel de la table Membres au moment de l ex cution de la commande et c est probablement ce qui est souhait Si vous voulez conserver un tat ant rieur de la page Web il faut pr alablement sauvegarder le fichier Membres htm Apr s l ouverture du fichier une batterie de Print crit les lignes de d but du fichier htm tel qu esquiss page 200 On implante la balise de d but de tableau et la boucle For Kol remplit la 1 ligne avec les noms de rubrique La boucle For Lig parcourt les enregistrements du Recordset M thodes MoveFirst au d part puis MoveNext dans la boucle Pour chaque enregistrement d un membre de l association il y aura une ligne du tableau donc on implante la balise lt tr gt de d but de ligne On a ensuite la boucle sur les rubriques On termine par la balise lt tr gt de fin de ligne Tsoft Eyrolles VBA pour Access 2007 amp 2010 173 TAPE 1 FICHIER HTM Les rubriques sont trait es en deux temps les NbRub 1 premi res ru
14. Rub 1 NomsRub NbRub FF Name Next NbRub NbRub 1 End Sub Tsoft Eyrolles VBA pour Access 2007 amp 2010 171 TAPE 1 FICHIER HTM En on d termine les noms de rubrique par balayage de la collection Fields 3 CONSTRUCTION DU FICHIER HTM La structure est tr s simple d but de la page Web tableau des membres fin de la page Le tableau a lui m me un d but et une fin entourant une double structure r p titive pour les lignes les membres et les colonnes les rubriques Voici le texte HTML repr sentant le tableau afficher lt html gt lt head gt d but de la page lt title gt Les Amis des Animaux lt title gt lt head gt lt body gt lt center gt lt h2 gt Membres de 1 Association lt h2 gt lt h2 gt Les Amis des Animaux lt h2 gt lt center gt lt table border width 95 gt d but du tableau lt tr gt lt tdsnom de rubrique lt td gt lt tr gt ligne d en t te ztr gt ligne lt td gt rubrique lt td gt rubrique lt td gt rubrique lt td gt rubrique cites fin de la ligne lt table gt fin du tableau lt body gt lt html gt fin de la page Voici la page Web correspondant au fichier Membres htm obtenu partir des donn es page 170 gr ce la proc dure GenerHTM ci apr s Membres de l Association Les Amis des Animaux N Nom Pr nom Adresse 1 Adresse 2 CP Ville Tel eMail 1 DUCK Donald Le Bois Sacr 1 rue du
15. able Membres a t effectu e C est la routine B Ver Click qui subit les plus importantes modifications La branche Mode 0 est inchang e ce qui prouve la solidit de notre programmation La branche Else est subdivis e en deux selon la valeur de EnCours Si EnCours vaut 0 on commence une recherche la cha ne de requ te est construite en fonction de la pr sence ou non du pr nom si le nom est absent il y a un message d erreur On teste alors s il y a des enregistrements conformes et a ce moment on ouvre le Recordset sur la requ te proprement dite Si EnCours vatt 1 c est que l utilisateur a cliqu sur Chercher Suivant il faut donc chercher plus loin condition qu on ne d passe pas la fin du Recordset dans ce cas un message en avertit l utilisateur Si on a pu lire un enregistrement les appels RecupChamps puis RemplitBDi affichent les donn es l utilisateur peut juger s il doit cliquer sur Correct ou demander l aller plus loin Si on clique sur Correct les donn es pourront tre modifi es et les valeurs modifi es valid es puisque les boutons de validation auront t activ s par B Correct Click Dim Nm As String Pr As String Dim EnCours As Boolean Sub CaptureDon Dim NomTB As String ct As Control Tx As String DonMemb RemoveAll none Jeu np Ilia Eemol Ebert Let Name 3 TB Then NomTB Mid ct Name 4 ct SetFocus IX IN Glo utes 1 DonMemb Add NomTB Tx End
16. briques sont trait es dans la boucle For Col Le contenu trouv sur la feuille est converti en cha ne S il est vide on inscrira amp nbsp qui figure un espace si on ne le faisait pas on aurait une case vide dans le tableau et la bordure aurait une discontinuit inesth tique ceci est un probl me HTML qui sort du sujet de ce livre Bien s r chaque rubrique est annonc e par la balise lt td gt Remarquez l emploi de Nz car une rubrique non renseign e dans la table donne la valeur Null La derni re rubrique est trait e part car il ny a pas qu recopier l adresse eMail il faut construire le lien en ins rant le contenu lu sur la feuille des membres entre les balises lt a gt et lt a gt Le programme se termine par les balises de fin de tableau et de fin d HTML et surtout par la fermeture du fichier ne pas oublier sous peine d criture incompl te Une fois la frappe finie faites D bogage Compiler Un certain nombre d erreurs peuvent vous tre signal es comparez avec le listing ci dessus et corrigez Sauvegardez la base de donn es sous le nom AmisAnimaux_1 accdb Attention vous ne devez pas craser le fichier de m me nom t l charg Vous devez avoir conserv une copie des fichiers originaux t l charg s dans un autre dossier Il vous reste tester l ex cution ce qui s obtient en cliquant sur le bouton G n re HTM de la feuille Menu Si vous n avez pas fait d erreur vous devriez obtenir un fi
17. chier Membres htm et la visualisation par votre navigateur doit avoir l aspect de la figure de la page 172 Remarquez que nous pr c dons chaque proc dure d un commentaire form de tirets qui servira de s parateur si vous imprimez le listing En effet l impression les traits de s paration install s par l Editeur VBA n apparaissent pas Le rappel du nom de la proc dure la fin aide la rep rer si le listing est tr s long 174 Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 2 NOUVEAU MEMBRE 1 CR ER UN FORMULAIRE Nous passons la gestion de la base de donn es et d abord l entr e d un nouveau membre II nous faut donc un formulaire pour entrer ses donn es Copiez la base AmisAnimaux_1 accdb en AmisAnimaux_2 accdb sur laquelle vous allez travailler Passez en mode cr ation de formulaire nommez le E Membre Caption Nouveau Membre Fixez les propri t s Fen Ind pendante Fen Modale Oui Boutons de d placement Non Cr ez une TextBox avec son Label c t donnez la valeur Droite la propri t Aligner le texte du label s lectionnez les deux et faites Copier Faites Coller 7 fois vous avez 8 couples on g re 8 rubriques Donnez aux labels les Captions respectives Nom Pr nom les noms de rubriques donnez aux TextBox les noms TB_Nom etc les noms des rubriques Cr ez 5 boutons les 4 premiers en bas le 5 c t du pr nom Don
18. de la structure des donn es dans les tables les proc dures v nements li s aux contr les de BDi et les appels des BDi sont crits en fonction les uns des autres et les transmissions de donn es doivent tre pr vues Autre comportement de la BDi autre fa on de l utiliser Par ailleurs le fait qu on puisse ouvrir les tables directement sous Access offre un moyen ind pendant de notre programme de les examiner et donc de v rifier ce que fait notre programme Bien s r cet acc s est surtout important pendant la phase de mise au point 188 Tsoft Eyrolles VBA pour Access 2007 amp 2010
19. ection Cm CommandType adCmdText Cm CommandText Select count Nom from Membres _ where Nom Nm and Prenom Pr mni Set Res Cm Execute If Res 0 Value lt gt 0 Then Rep MsgBox Ce nom et pr nom sont d j pr sents vbCr _ voulez vous tout de m me entrer ce membre vbYesNo vbExclamation If Rep vbYes Then B OK Enabled True B OKDern Enabled True Else B OK Enabled True B OKDern Enabled True End If Else laiss vide pour le moment Endi e End Sub Private Sub Form Current NDS UU SSP TRE LE If Mode 0 Then Me Caption Nouveau membre E reng eet Jens My riiiert Else laiss vide pour le moment End If End Sub Private Sub TB Nom Exit Cancel As Integer Nm Nz TER NOM TEXTE B OK Enabled False B OKDern Enabled False End Sub Private Sub TB Pr nom Exit Cancel As Integer Pr NZ TE Pr nom Text B OK Enabled False B OKDern Enabled False End Sub 3 PROCEDURE NOUVMEMBRE DANS MODULE 1 NouvMembre Sub NouvMembre Dim NomC As String ff As Object Dernier False While Not Dernier Set DonMemb CreateObject Scripting Dictionary Set Cnx CurrentProject Connection Set Rst New ADODB Recordset Rst Open Membres Cnx adOpenDynamic adLockOptimistic Satisf False 178 Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 2 NOUVEAU MEMBRE Mode 0 DoCmd
20. ie Suivant Les routines des quatre boutons de validation ainsi que les deux routines d Exit des deux TextBox sont inchang es mais CaptureDon commence par un vidage du dictionnaire en effet maintenant pour une ouverture du formulaire il peut y avoir plusieurs enregistrements regarder lors de la recherche de l enregistrement modifier CaptureDon est compl t e par un certain nombre de routines de transfert entre TextBox et le dictionnaire DonMemb ou entre champs de l enregistrement en cours VideBDi RemplitBDi RecupChamps et RemplitChamps Les deux derni res sont dans Module 182 Tsoft Eyrolles VBA pour Access 2007 amp 2010 TAPE 3 MODIFICATION SUPPRESSION La proc dure Form Current a maintenant aussi la branche pour Mode 1 sous le Else M me la branche Mode 0 est modifier puisqu il s ajoute la gestion des activations et visibilit des boutons suppl mentaires ZB Correct et B_Suppr Dans la branche Mode 1 on initialise EnCours False La routine B Correct Click active le bouton Supprimer et les deux OK puisque le membre sur lequel on veut agir est maintenant trouv B Suppr Click demande une confirmation et si oui effectue la suppression On agit sur l enregistrement en cours Remarquez que apr s la suppression de l enregistrement on appelle B Annul Click en effet au retour dans le programme appelant tout doit se passer comme si on avait annul car la modification de la t
21. modifications vous cliquez sur le bouton et modifiez quelques donn es Ensuite vous fermez le formulaire Menu et ouvrez la table Membres pour v rifier que les modifications sont bien entr es et sont la bonne place Tsoft Eyrolles VBA pour Access 2007 amp 2010 187 POUR ALLER PLUS LOIN Voici quelques directions de possibles am liorations Offrir un syst me d Aide Offrir un syst me d aide Il faut bien s r cr er les fichiers hm voulus ce n est pas le sujet de ce livre Ensuite il faut fournir au moins un bouton dans le formulaire Menu un bouton dans le formulaire F Membre Nous avons vu comment crire les routines de clic de ces boutons G rer des rubriques suppl mentaires C est simple en s inspirant des routines crites pour les rubriques en place Ajouter des fonctionnalit s Par exemple faire un syst me de relance des adh rents en retard de cotisation il faudrait ajouter la rubrique date de derni re cotisation C est utile pour toutes les associations Am liorer l ergonomie Si on clique sur Chercher Suivant une fois de trop le nom ne sera pas trouv et il faudra reprendre la recherche au d but Il serait plus ergonomique d implanter un bouton Pr c dent permettant des allers et retours Maintenant quelques le ons retenir de cette tude de cas et de toutes Compl mentarit de tous les l ments d un projet les instructions sont crites en fonction
22. nez les Name et Caption respectifs B_OK OK B_OKDern OK Dernier B_Annul Annuler B_Quit Quitter et B Ver V rifier Cr ez un Label en haut avec Visible False et la Caption F Membre V2 date F date ce label appara tra au listing alors que le titre du formulaire n appara t pas Le formulaire doit avoir l aspect ind pendant Ind pendant rifier Ind pendant Ind pendant Ind pendant Ind pendant Ind pendant Ind pendant L OK Dernier Annuler Quitter Tsoft Eyrolles VBA pour Access 2007 amp 2010 175 TAPE 2 NOUVEAU MEMBRE Le bouton V rifier devra tre cliqu apr s avoir entr nom et pr nom le syst me pr viendra si nom et pr nom identiques se trouvent d j dans la base Les boutons de validation ne seront activ s qu apr s cette v rification La dualit OK Annuler OK Dernier Quitter permet d entrer une s rie de membres pour le dernier on valide par OK Dernier Cette gestion utilise deux bool ens Satisf et Dernier Satisf est vrai si on a valid les donn es d un membre Dernier si c est le dernier de la s rie On a en plus une variable Mode qui distinguera le cas Nouveau membre du cas Modification car par conomie nous utiliserons le m me formulaire peine modifi Ces variables sont publiques ainsi que le tableau DonMemb des donn es du membre qui se
23. r Click Dim Rep Rep MsgBox Etes vous s r de vouloir supprimer ce membre vbYesNo vbQuestion If Rep vbYes Then Rst Delete adAffectCurrent Rst Update B Annul Click Hal Ii End Sub Function TestSQL chSQL As String As Boolean Dim Cm As New ADODB Command Res Set Cm ActiveConnection CurrentProject Connection Cm CommandType adCmdText Cm CommandText chSQL Set Res Cm Execute If Res 0 Value lt gt 0 Then TestSQL True Else TestSQL False Set Cm Nothing End Function Private Sub B Ver Click Dim Ch As String Rep If Mode O Then Ch Select count Nom from Membres _ where Non M Nm and Prenom Pr mw If TestSQL Ch Then voulez vous tout de m me entrer ce membre vbYesNo vbExclamation If Rep vbYes Then B OK Enabled True B OKDern Enabled Else B OK Enabled True B OKDern Enabled True ECRIRE Else Mode If Not EnCours Then L Ni M ie MsgBox Il faut un nom Exit Sub End If Ch select count Nom from Membres where LE Bae MU Tien Ga ACHETE SLA NON HA 6 Wig O Else Ci Ca Nom iim MI gual Ceieeinemal ae 2 Bou End If If Not TestSQL Ch Then Exit Sub End If EnCours True Ch Replace Ch count Nom Rst Open Ch Cnx adOpenDynamic adLockOptimistic Rst MoveFirst Else Not EnCours Rst MoveNext Tsoft Eyrolles VBA pour Access 2007 amp 2010 MsgBox Pas d enregistrement conforme Changez ou annulez Rep MsgBox Ce
24. ra g r comme objet Scripting Dictionary En r sum il s ajoute en t te du Module 1 les d clarations Public Mode As Integer Satisf As Boolean Dernier As Boolean DonMemb As Object 2 MODULE DE CLASSE DU FORMULAIRE Ce module est essentiellement form des proc dures v nements des contr les du formulaire mais il peut s ajouter d autres proc dures si comme ce sera le cas ici une m me op ration est effectuer partir de plusieurs contr les Pour implanter une proc dure v nement vous s lectionnez le contr le puis cliquez sur la ligne Sur v nement dans l onglet Ev nements la fen tre de propri t s choisissez G n rateur de code Il s implante souvent inopin ment des routines Click laiss es vides pensez les supprimer Le module a deux variables globales au niveau module Nm et Pr qui contiendront le nom et le pr nom du membre en cours d ajout Nous avons d abord la routine Form Current o nous n implantons que la branche Mode 0 on ne fait qu initialiser Nm et Pr et fixer le titre du formulaire et la l gende du bouton V rifier Lorsqu on a entr un nom et ou un pr nom on d sactive les boutons OK car on doit effectuer la v rification d o les deux routines TB Nom Exit et TB Pr nom Exit Elles prennent en compte respectivement le nom et le pr nom entr s Les quatre routines des boutons de validation B Annul Click B OK Click B_OKDern Click et B Quit Click sont
25. semble des donn es de l enregistrement et l utilisateur doit cliquer sur Correct si c est l enregistrement cherch Sinon il doit cliquer sur Chercher Suivant car il peut y avoir plusieurs membres de m me nom Le libell Chercher Suivant remplace le libell V rifier z les deux boutons suppl mentaires sont visibles et actifs seulement si Mode 1 Dans ce cas on change aussi le titre du formulaire dans la routine Form Current Voici le nouvel aspect du formulaire omj Ind pendant V rifier i SES ES TI Ind pendant Correct _ Ind pendant Supprimer Ind pendant me hee Ind pendant Ind pendant EEE TT 1 Nous essayons d avoir un mode d emploi assez perfectionn pour la recherche de l enregistrement modifier Si vous fournissez le pr nom la recherche se fait sur nom et pr nom exacts Si vous ne fournissez pas le pr nom on accepte tout nom contenant ce que vous avez tap dans la zone nom 2 PROC DURES DU MODULE DE CLASSE Dans la fen tre de code associ e au formulaire vous avez un certain nombre de routines modifier et il s ajoute les routines de clic des deux boutons suppl mentaires Le module de classe a une nouvelle variable EnCours vraie si ce n est pas la 1 fois que vous tapez sur le bouton la 1 fois il signifie Chercher les fois suivantes il signif
26. sous le nom n 1 et faites les manipulations sur ce fichier n 1 2 ROUTINE D INITIALISATION Nous commen ons par l introduction d une routine d initialisation InitGen et de quelques Variables Chem le dossier des fichiers au d part le fichier htm sera dans le m me que la base de donn es Sep le s parateur ou il faut changer l instruction Sep sur Mac et c est probablement la seule a changer NbRub nombre de rubriques trait es on le diminue de 1 car on ne s occupe pas de la cotisation et le tableau NomsRub les noms de rubriques On introduit une variable Cnx pour la connexion Rst pour le Recordset de la table des membres et NbLig le nombre d enregistrements Celui ci est d termin par RecordCount car le Recordset est ouvert en lecture seule Les routines qui suivent doivent tre saisies dans le module Module 1 Voici la routine InitGen pr c d e des d clarations Ise yersiom l eener eer Public Chem As String Sep As String Rub As String Public Cnx As ADODB Connection Rst As ADODB Recordset Public NbRub As Integer NomsRub 10 As String FF As Object Public NbLig As Integer Kol As Integer Lig As Integer Sub InitGen Sep Remplacer par Sep sur Mac Chem CurrentProject Path Sep Set Cnx CurrentProject Connection Set Rst New ADODB Recordset Rst Open Membres Cnx adOpenStatic adLockReadOnly NbLig Rst RecordCount NbRub 0 For Each FF In Rst Fields NbRub Nb

Download Pdf Manuals

image

Related Search

Related Contents

コンパクトクール(3−Fin)用 カーボンカラーパイプ 取扱説明書  FAST GLATT  Keysight-Agilent E1401B Datasheet  3MTM スコッチカル TM ワンウェイビジョン TM グラフィックフィルム 8170  PAGE 45 - Woodcraft  Construcción - Construnario.com  Diagnostics, Pages 201-264 - Suncoast Surgical & Medical Supply  USER GUIDE  Serial Ethernet Manual de usuario  SonicWALL Secure Remote Access Series  

Copyright © All rights reserved.
DMCA: DMCA_mwitty#outlook.com.