rapport final access97-xp

75
1 Sommaire Introduction .................................................................................... 3 Chapitre 1 – Avant propos ............................................................... 5 Présentation du sujet : Analyse comparative Access 97 / XP ....................... 5 Description du travail ............................................................................. 6 Contexte technique ............................................................................... 6 Présentation d’Access ............................................................................ 6 Chapitre 2 - Manipulation des objets de base avec Access ............. 9 I - Etude des travaux pratiques en Access 97 ..................................... 9 I.1 - Eléments caractéristiques des travaux pratiques actuels ..................... 9 I.1.1 - La fenêtre de gestion de la base de données ........................................... 9 I.1.2 - La création d’une table........................................................................10 I.1.3 - La création des requêtes avec l’assistant ...............................................12 I.1.4 - La création d’un formulaire ayant pour source une requête ......................13 I.1.5 - La création d’un sous-formulaire ..........................................................15 I.1.6 - La création des états et des sous-états .................................................16 I.2 - Points difficiles des travaux pratiques actuels .................................. 16 II - Migration des travaux pratiques vers Access XP .......................... 17 II.1 – Différences relevées au cours de l’adaptation ................................. 17 II.1.1 – La fenêtre de gestion de la base de données ........................................17 II.1.2 - La création d’une table ......................................................................19 II.1.3 - La création des requêtes avec l’assistant ..............................................19 II.1.4 - La création d’un formulaire ayant pour source une requête ....................20 II.1.5 - La création d’un sous-formulaire .........................................................21 II.1.6 - La création des états et des sous-états ................................................23 II.2 - Nouveautés de Access XP............................................................. 23 II.2.1 - Liens hypertextes ..............................................................................23 II.2.2 - Publication de page WEB ....................................................................24 II.2.2.1 – Les différentes manières de créer une page d’accès aux données ......24 II.2.2.2 – Etude des différentes fenêtres disponibles lors de la création d’une page d’accès aux données en mode création : ..............................26 II.2.2.3 - Différents types de Page d'accès aux données .................................27 II.2.2.4 - Utilisation des Pages d'accès aux données ......................................28 II.2.3 - Prise en charge XML ..........................................................................28

Upload: ahouba

Post on 06-Nov-2015

17 views

Category:

Documents


1 download

DESCRIPTION

Ms Access

TRANSCRIPT

  • 1SSoommmmaaiirree

    Introduction .................................................................................... 3 Chapitre 1 Avant propos ............................................................... 5

    Prsentation du sujet : Analyse comparative Access 97 / XP....................... 5 Description du travail............................................................................. 6 Contexte technique ............................................................................... 6 Prsentation dAccess ............................................................................ 6

    Chapitre 2 - Manipulation des objets de base avec Access............. 9 I - Etude des travaux pratiques en Access 97..................................... 9

    I.1 - Elments caractristiques des travaux pratiques actuels ..................... 9 I.1.1 - La fentre de gestion de la base de donnes........................................... 9 I.1.2 - La cration dune table........................................................................10 I.1.3 - La cration des requtes avec lassistant ...............................................12 I.1.4 - La cration dun formulaire ayant pour source une requte......................13 I.1.5 - La cration dun sous-formulaire ..........................................................15 I.1.6 - La cration des tats et des sous-tats .................................................16

    I.2 - Points difficiles des travaux pratiques actuels .................................. 16

    II - Migration des travaux pratiques vers Access XP .......................... 17

    II.1 Diffrences releves au cours de ladaptation................................. 17 II.1.1 La fentre de gestion de la base de donnes ........................................17 II.1.2 - La cration dune table ......................................................................19 II.1.3 - La cration des requtes avec lassistant..............................................19 II.1.4 - La cration dun formulaire ayant pour source une requte ....................20 II.1.5 - La cration dun sous-formulaire .........................................................21 II.1.6 - La cration des tats et des sous-tats ................................................23

    II.2 - Nouveauts de Access XP............................................................. 23 II.2.1 - Liens hypertextes..............................................................................23 II.2.2 - Publication de page WEB....................................................................24

    II.2.2.1 Les diffrentes manires de crer une page daccs aux donnes......24 II.2.2.2 Etude des diffrentes fentres disponibles lors de la cration dune

    page daccs aux donnes en mode cration : ..............................26 II.2.2.3 - Diffrents types de Page d'accs aux donnes.................................27 II.2.2.4 - Utilisation des Pages d'accs aux donnes ......................................28

    II.2.3 - Prise en charge XML ..........................................................................28

  • 2Chapitre 3 - Le langage de programmation de Access : VBA........33 I - Introduction ............................................................................ 33

    I.1 - Consquences dans lutilisation de la fentre VBA dAccess : ............. 34 I.2 - Utilisation de laide de VBA............................................................ 36

    II - Prsentation de ADO ............................................................... 36

    1 - Modle objet ADO : ........................................................................ 37 2 Modle objet ADOX ........................................................................ 38

    III - Utiliser ADO avec VBA ............................................................ 39

    III.1 Connection (ADO) et Catalog (ADOX) .......................................... 39 III.1.1 - Ouvrir une connexion une base de donnes existante ........................39 III.1.2 - Accder la base de donnes courante ..............................................40 III.1.3 - Dfinition du schma de la base de donnes........................................40

    III.2 Recordset................................................................................ 41 III.2.1 - Ouvrir un recordset avec ADO ...........................................................41 III.2.2 - Dterminer la position courante dun recordset ....................................43 III.2.3 - Trouver des enregistrements dans un recordset...................................43

    III.2.3.1 - La mthode Find ........................................................................43 III.2.3.2 - La mthode Seek .......................................................................45

    III.2.4 - Filtrer et Trier les donnes dans un recordset ......................................46 III.2.4.1 - Utiliser la proprit Filter (Filtre): .................................................46 III.2.4.2 - Utiliser la prorit Sort (Tri).........................................................46

    III.2.5 - Ajouter ou modifier des enregistrements.............................................47

    Conclusion .....................................................................................49 Bibliographie.................................................................................. 51 Remerciements ..............................................................................53 Annexes..........................................................................................55

    Annexe A : DAO vers ADO - Aide-mmoire ...................................... 55

    Annexe B : Modle objet ADO dtaill ............................................. 61

  • 3IInnttrroodduuccttiioonn

    Dans le cadre de la formation de premire anne dIUP Gnie Informatique, nous allons raliser une tude comparative de deux versions dun mme logiciel : Microsoft Access.

    Ce projet est sous la direction de Sylvie Damy, matre de confrence lUniversit de Franche-Comt, responsable de lenseignement de base de donnes en IUP1. La finalit de ce projet est de changer de version de logiciel dans le cadre des travaux pratiques de lenseignement de base de donnes.

    Cette tude aura pour support les travaux pratiques raliss par Mme Damy, qui sont soumis aux tudiants de premire anne dIUP GMI. Nous raliserons une tudes de ces travaux pratiques sous Access 97 en faisant ressortir les points caractristiques et lments importants de ces travaux pratiques. Puis nous effectuerons une migration des ces travaux pratiques vers Access XP pour observer les diffrences que cette version apporte.

    Dans la seconde partie de cette tude, nous aborderons la partie programmation qui se rvle fortement diffrente celle des travaux pratiques dAccess 97. Cette partie sera traite en dtail car elle dune grande importance dans lenseignement dun IUP informatique.

    Tout au long de cette tude vous trouverez des copies dcrans ou des exemples de code qui illustreront les propos traits dans un souci de clart. De plus des annexes sur la partie programmation disponibles en fin de rapport sont une source supplmentaire dinformations. Il sera donc parfois intressant de se reporter ces annexes pour celui qui dsire de plus amples prcisions.

    Pour finir, cette tude nest pas compltement exhaustive et ne prtend pas aborder toutes les diffrences entre les deux versions du logiciel. Mais nous y avons trait les changements et apports qui nous ont paru fondamentaux.

  • Chapitre 1 Avant propos

    5

    CChhaappiittrree 11 AAvvaanntt pprrooppooss

    Nous allons tout dabord dans ce premier chapitre mettre en place le cadre de notre tude, ce qui nous permettra de prciser la fois le contexte, les moyens et les buts de ce projet.

    PPrrss eennttaa tt iioonn dduu ssuujjee tt :: AAnn aa llyyssee cc oommppaa rraa tt ii vvee AAccccee ssss 9977 // XXPPCe projet de Base de Donnes a pour but de dresser une tude de lvolution du logiciel Access de Microsoft. Ce logiciel est un SGBD (Systme de Gestion des Base de Donnes) au mme titre que MySQL, Oracle et de nombreux autres.... Les SGBD sont une famille de logiciels permettant de mettre en place un systme dinformation qui permet de regrouper, dorganiser et de manipuler les informations ncessaires toute entreprise ou organisation.

    En effet grce cet outil, il est possible pour lentreprise dorganiser :

    La gestion des salaires des employs, de lautomatisation des calculs de feuille de paye leur impression automatique tous les 1er vendredis du mois.

    La gestion des factures des fournisseurs ou des commandes de clients, et pourquoi pas relier cela au site Internet de la socit afin de crer un service de vente par correspondance.

    Ou, titre personnel, un particulier peut tre amen utiliser Access pour

    Grer une discothque, une vidothque ou tout type de collections.

    A travers la prsentation dAccess faite dans la quatrime partie de ce chapitre, nous prsenterons plus en dtail les concepts de base dun SGBD. Ces logiciels sont trs rpandus et il est important de savoir sen servir car sils sont trs utiles, ils sont parfois aussi peu accessibles voire austres.

    Mais les diteurs ont compris quaujourdhui les entreprises privilgient des logiciels ergonomiques (i.e. facile dutilisation) permettant une meilleure productivit. Ils accordent maintenant une importance la disposition des menus, des icnes sur lcran selon la frquence dutilisation des fonctions associes, de manire obtenir un sentiment de commodit immdiate ds la premire approche du logiciel.

    Au cours de ce rapport, nous dcouvrirons les nouveauts et amliorations quapporte la version 2002 dAccess (ou Access XP) par rapport la version 97.

    Il sagit de mettre en vidence les diffrences qui existent tant au niveau de linterface qu lintrieur mme du logiciel, car sil est vrai que ces cinq ans de dveloppement nont pas crs de changements rvolutionnaires au sein dAccess, il existe de nombreuses diffrences qui peuvent provoquer bon nombre de problmes difficiles identifier lors de la migration dAccess 97 vers Access XP.

  • Chapitre 1 Avant propos

    6

    DDeesscc rr iipp tt iioonn dduu tt rraavvaa ii llLe but de ce projet est donc de faire une analyse compare des deux versions dAccess, au travers dun cas pratique afin dtre en mesure de porter le plus facilement possible une base de donnes Access 97 sous Access XP.

    En outre, nous tenterons davoir un regard critique vis vis du support de cette comparaison, savoir les travaux pratiques du module de Base de Donnes dIUP1.

    Afin de souligner les problmes poss par une migration de Access 97 vers Access XP, nous allons refaire les travaux pratiques du module de base de donnes dIUP1 adapts la version 97 sous Access XP. Ainsi nous serons en mesure didentifier les problmes poss par une telle migration.

    Nous chercherons ainsi identifier les diffrences qui peuvent poser des problmes, tant au niveau de linterface que des options proposes par Access tout au long de la cration et de ladministration dune base de donnes.

    Cependant, la majeure partie des diffrences que nous relverons se situera au niveau du langage de programmation de la version 97 et XP, tant donn quil a t profondment revu entre ces deux versions et quil est lorigine des problmes les plus complexes en terme dadaptation.

    CCoonnttee xxttee tteecchhnn iiqq uueeLes travaux pratiques de base de donnes ayant t raliss sous Access 97, ltude utilisera les logiciels Microsoft Access 97 et Microsoft Access XP avec leurs VBA associs cest--dire respectivement VBA 3.0 et VBA 6.0. Ces technologies ainsi que les mthodes daccs aux donnes seront dtailles dans la partie programmation.

    PPrrss eennttaa tt iioonn dd AA cccceessssComme nous lavons dit prcdemment Access est le SGBD relationnel fourni par Microsoft. Un SGBD permet de constituer des collections de donnes que lon pourra organiser, slectionner, trier, modifier, mettre jour

    Ces collections de donnes sont contenues dans une base de donnes. Access propose diffrents objets pour constituer la base tels que des tables pour stocker les donnes, des requtes pour extraire et organiser des donnes, des formulaires pour raliser des interfaces utilisateurs, des tats permettant des impressions, des pages offrant la possibilit de crer des pages Web actives... Grce Access, trier, visualiser, imprimer ou transmettre sur Internet des donnes sera donc possible.

    La premire version de Microsoft Access date de 1995. Depuis de nouvelles versions sont apparues : Access 97, Access 2000 et Access 2002. Une des mieux accueillie ft Access 97 pour ses performances remarquables lpoque. Cependant les versions 2000 et 2002 ont compltement chang dun point de vu programmation mais cela ne concerne que les utilisateurs confirms. En effet le mode daccs aux objets sest profondment modifier passant de la technologie DAO (Data Access Objects) la technologie ADO (ActiveX Data Objects). De plus avec lexpansion du Web, Microsoft a adapt son logiciel lInternet en instaurant depuis la version 2000 la possibilit de crer des pages Web appeles Pages daccs aux donnes .

    Access est un SGBD qui a su voluer et multiplier ses possibilits, du fait quil soit dvelopp par lune des plus grande entreprise de dveloppement de logiciel. Mais la grande notorit de Microsoft et leur certitude concernant leurs ventes les amne parfois ce ngliger concernant certaines parties des logiciels telle que laide qui nest mise jour que part lajout dinformations ce qui rend lensemble complexe et difficile dutilisation.

  • Chapitre 1 Avant propos

    7

    Figure 1 : Access XP et la base de donnes Discothque ouverte

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access 97

    9

    CChhaappiittrree 22 -- MMaanniippuullaattiioonn ddeess oobbjjeettss ddee bbaasseeaavveecc AAcccceessss

    Aprs avoir abord ces ncessaires prliminaires notre tude, commenons lanalyse du sujet de ce dossier, c'est--dire la comparaison entre Access 97 et Access XP.

    Pour cela nous tudierons tout dabord la cration de la base de donnes Discothque en Access 97. Nous soulignerons ensuite les diffrences dans la cration de cette mme base de donnes sous la version XP pour mettre en vidence les particularits de Access XP.

    II -- EEttuuddee ddeess ttrraavvaauuxx pprraattiiqquueess eenn AAcccceessss 9977Afin de permettre une comparaison efficace, il est important de pouvoir mettre en vidence des lments cls qui pourront servir de points de comparaison entre les 2 versions. Nous utiliserons pour cela des exemples tirs des travaux pratiques du module de Base de Donnes dIUP1.

    Nous mettrons tout dabord en avant les points caractristiques de ces travaux pratiques puis nous nous intresserons aux difficults que nous avons rencontres lors de la ralisation de ces travaux pratiques, car les lments ainsi identifis sont souvent intressants.

    II .. 11 -- EE ll mmeenn ttss ccaa rraacc tt rr iiss tt iiqquu eess ddee ss tt rraavvaauuxx pp rraa tt iiqquu eess aacc ttuuee llssNous allons tudier les travaux pratiques de base de donnes au travers de six points caractristiques.

    I.1.1 - La fentre de gestion de la base de donnes Il sagit de linterface principale qui permet lutilisateur daccder chacun des outils mis disposition de lutilisateur afin dadministrer sa base de donnes.

    Figure 2 : La fentre de gestion de Discothque sous Access 97

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access 97

    10

    Nous voyons sur cette fentre de nombreux menus :

    Une barre horizontale contenant six onglets dtaills ci-aprs.

    Trois boutons sur le ct droit : Ouvrir, Modifier, Nouveau.

    Longlet horizontal contient six rubriques diffrentes :

    Tables : Cette rubrique permet daccder aux tables (ou relations). Ces tables sont les structures qui renferment les donnes selon un formalisme choisi.

    Par exemple, une table contiendra les noms, prnoms et date dinscriptions des membres du club X.

    Requtes : Cette rubrique permet de crer des requtes (ou vues dans dautres SGBD). Ces requtes sont bases sur les tables. Elles consistent en une expression de critres et dinstructions qui lorsquelles sont interprtes par le moteur de base de donnes renvoient des informations pouvant provenir de plusieurs tables.

    Par exemple dans Discothque, avec une table contenant des noms dalbums et des titres de chansons, et une autre contenant les mmes noms dalbums et leurs interprtes, on peut connatre les titres des chansons interprtes par un interprte donn.

    Formulaires : Cette rubrique permet daccder aux formulaires. Ces formulaires sont la partie principale de linterface utilisateur pour laccs aux donnes. Ils permettent ladministrateur de la base de donnes de crer des fentres permettant dorganiser un systme dinformation convivial et facile dutilisation.

    On pense par exemple un enchanement de menus permettant daccder des traitements de donnes spcifiques.

    Etats : Les tats permettent dimprimer ou de visualiser des donnes selon un cadre prdfini.

    Par exemple la cration automatique dune facture, en fonction des informations qui la composent.

    Macros et Modules : Ces rubriques permettent le dveloppement doutils en Visual Basic. Il est parfois ncessaire de dvelopper des modules laide de ce langage lorsque certains traitements ne peuvent tre obtenus par dautres moyens.

    Cette fentre est donc le point de dpart de la base de donnes.

    I.1.2 - La cration dune table Les tables sont les structures de base de toute base de donnes. Une table est constitue de deux parties :

    Un en-tte prcisant un ensemble fix dattributs

    Un corps form par les enregistrements contenus dans la table, un enregistrement de la table tant une information qui respecte le formalisme dict par len-tte.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access 97

    11

    Ceci peut sembler compliqu mais un exemple claircira tout ceci : examinons lorganisation de la table Album :

    Figure 3 : La table Album en mode Feuille de donnes

    On voit sur cette figure len-tte form des attributs CodeAlbum, TitreAlbum, CodeArtiste et AnneeSortie, puis les enregistrements contenus dans la table : par exemple lalbum qui a le CodeAlbum "10000" a pour titre "EarthLing" et pour CodeArtiste "Dabow" et est sorti en "1996".

    Pour mettre en place une table, il est ncessaire de dfinir les attributs de son en-tte. Le mode cration de table permet de raliser cela. Ce mode permet de choisir pour chaque champ (chaque attribut de len-tte) quel type de donnes il peut contenir (entier, date, texte), ce qui permettra lordinateur deffectuer des traitements sur les enregistrements contenus.

    Figure 4 : La table Album en mode Cration de table

    Access 97 permet le choix parmi 8 types de donnes diffrents : Texte, Mmo, Numrique, Date/Heure, Montaire, Numrotation automatique, Oui/Non, Objet OLE.

    Il est aussi possible de crer des listes de choix qui permettent dentrer les valeurs que pourra prendre le champ. Par exemple un champ Sexe aura la liste de choix Masculin ou Fminin.

    La colonne description permet dajouter un descriptif bref et pertinent permettant la bonne comprhension de linformation.

    Dans le bas de la fentre se trouve un cadran permettant de prdfinir les proprits de chaque champ :

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access 97

    12

    Taille du champs : permet de prciser la taille du champs.

    Format : cette proprit peut permettre au crateur de la base de donnes de mettre en forme laffichage dun champ.

    Masque de saisie : permet de formater les saisies cest--dire dobliger lutilisateur saisir un champ dans un format choisi. Par exemple il suffit de remplir ce champ par LL000 pour que la saisie ce fasse si le champ est de type 2 lettres suivies de 3 chiffres.

    Lgende : titre de colonne affiche sur la table.

    Valeur par dfaut : prcise la valeur par dfaut.

    Valide si : permet dajouter un paramtre la validit du champ saisi. Par exemple si le champ est de type Date, on peut empcher une saisi antrieure la date courante.

    Message erreur : permet laffichage dune boite de dialogue lorsque la saisie est incorrecte, ce qui savre trs utile pour renseigner lutilisateur quant aux proprit du champ en question.

    Null interdit : autorise ou non labsence dun champ.

    Chane vide autorise : autorise des chanes nulles dans le champ.

    Index : permet de crer des champs indexs qui acclrerons la recherche lors dune requte.

    I.1.3 - La cration des requtes avec lassistant Les requtes (ou vues dans dautres SGBD) sont des expressions spcifiant des critres de slection. Leur excution par le moteur de base de donnes permet de visualiser les enregistrements correspondants aux critres fournis.

    Prenons lexemple de la requte RTitres73 dans Discothque ; son excution permet dafficher pour chaque chanson enregistre en 1973 son titre et le nom de son auteur.

    Figure 5 : Rsultat de la requte RTitres73

    Afin de crer ces requtes, c'est--dire de spcifier les critres de slection, Access 97 nous propose 2 modes :

    Le mode QBE (Query by example) qui est un assistant graphique de cration. Cet assistant permet de dfinir quelles tables entrent en jeu dans la requte, de prciser quels champs de ces tables sont utiliss et avec quels paramtres.

    Par exemple, sur la figure 6 on voit dans la colonne du milieu quon extraira de la table Album les albums sortis en 1973.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access 97

    13

    Figure 6 : La requte RTitres73 cre avec l'assistant QBE

    Le mode SQL (Structured Query Language) qui est une fentre permettant de saisir directement sa requte au clavier en suivant les spcifications du langage SQL1.

    Figure 7 : La requte RTitres73 en mode SQL

    Lors de la cration dune requte laide de lassistant QBE, Access gnre lui-mme le code SQL correspondant. Cependant, on remarque que sous Access 97 le code ainsi gnr est encombr de nombreuses parenthses inutiles (Figure 7) gnantes pour la comprhension du code.

    I.1.4 - La cration dun formulaire ayant pour source une requte

    Un formulaire est une interface que ladministrateur de la base de donnes cre afin de permettre lutilisateur de naviguer dans la base de donnes. Ces formulaires peuvent servir visualiser les rsultats dune requte : ce sont alors des formulaires ayant pour source une requte.

    Pour raliser ce type de formulaire, il faut importer la requte renvoyant les rsultats dsirs lors de la cration du formulaire.

    1 SQL est le langage standard des SGBD relationnels. Cest IBM qui a commenc le dvelopper au milieu des annes 70. Il rpond au besoin dtablir une norme pour la cration des requtes quelque soit le SGBD utilis.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access 97

    14

    Pour cela il faut dabord enregistrer dans la base de donnes la requte que lon souhaite. Nous allons ensuite crer notre formulaire en mode cration ou grce lassistant de cration. Une fois le formulaire cr, il faut cliquer sur les proprits du formulaire et slectionner notre requte dans le champ Source .

    Dans notre cas on slectionnera la requte RInfoAdhrents de la base de donnes Discothque afin de crer le formulaire Adhrents qui renseigne lutilisateur de la base de donnes sur les adhrents la discothque.

    Figure 8 : Cration d'un formulaire ayant pour source une requte : liaison avec la requte

    Figure 9 : La requte RInfoAdhrents

    Dsormais le formulaire dpend de la requte RInfoAdhrents. Maintenant si lon dsire par exemple afficher sur le formulaire un champ dpendant de la requte, il faut cliquer sur les proprits du champ et slectionner la source de contrle dans longlet Donnes .

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access 97

    I.Unapfooualb

    Pofo

    Fig

    Undapa

    Il di

    15

    1.5 - La cration dun sous-formulaire sous-formulaire est un formulaire dans un formulaire. Le formulaire primaire est pel formulaire principal et le formulaire quil contient sous-formulaire. Les sous-rmulaires sont particulirement utiles lorsque lon veut afficher des donnes de tables de requtes qui ont une relation un--plusieurs ; cest le cas des chansons dun um.

    ur crer un sous formulaire, il faut insrer dans le formulaire pre une zone de sous-rmulaire en utilisant la boite outils :

    ure 11 : Boite outils dAccess 97

    assistant de cration de sous-formulaire souvre alors, demandant dindiquer tout bord la provenance des donnes du sous-formulaire puis quels champs doivent rticiper au lien entre les deux formulaires.

    est possible en Access 97 de crer jusqu' deux niveaux de sous-formulaires, c'est--re quun sous-formulaire peut tre formulaire principal dun second sous-formulaire.

    Sous formulaire

    Figure 10 : Zone de texte lie la requte

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access 97

    16

    I.1.6 - La cration des tats et des sous-tats Les sous-tats se font de manire similaire la cration de sous-formulaires en utilisant un champ slectionn partir de la boite outils et en le mettant sous la dpendance de ltat dsir.

    II .. 22 -- PPoo iinn ttss dd ii ff ff iicc ii ll eess ddeess tt rraa vvaauuxx pprraa tt iiqquueess aacc ttuuee llssLors de la ralisation de ces travaux pratiques nous avons relev plusieurs points difficiles que nous avons choisi de dtailler afin de voir si le changement de version contribuait une ralisation plus aise de ces points.

    Nous avons relev des difficults importantes lors de :

    La dfinition des structures de table, en particulier pour tablir les masques de saisie sur les champs.

    La cration dun formulaire li un sous formulaire qui reste un point difficile mme avec lutilisation de lassistant.

    La mise en place des tats qui est dlicate mme avec lutilisation de lassistant.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    17

    IIII -- MMiiggrraattiioonn ddeess ttrraavvaauuxx pprraattiiqquueess vveerrss AAcccceessssXXPP

    Nous allons dans cette partie nous intresser tout dabord ladaptation des travaux pratiques sous Access XP afin de mettre en valeur les diffrences entre les deux versions, puis nous aborderons les nouvelles fonctionnalits disponibles dans Access XP.

    II II .. 11 DD ii ff ff rreenncceess rree ll eevveess aauu ccoouu rrss ddee ll aa ddaapp ttaa tt iioo nnNous reprendrons dans cette partie le mme plan que dans la partie I.1, un plan en six points qui nous permettra une comparaison efficace des deux versions dAccess.

    II.1.1 La fentre de gestion de la base de donnes Tout comme sous Access 97, il sagit du point de dpart de la base de donnes.

    Figure 12 : La fentre de gestion de Discothque sous Access XP

    Nous voyons sur cette fentre de nombreux menus :

    Une barre verticale contenant deux sous menus : Objets et Groupes.

    Une barre horizontale dont le contenu change en fonction de lobjet choisi dans la barre verticale.

    Le menu Objets contient sept rubriques diffrentes :

    Tables : Cette rubrique permet daccder aux tables (ou relations). Ces tables sont les structures qui renferment les donnes selon un formalisme choisi.

    Par exemple, une table contiendra les noms, prnoms et date dinscriptions des membres du club X.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    18

    Requtes : Cette rubrique permet de crer des requtes (ou vues dans dautres SGBD). Ces requtes sont bases sur les tables. Elles consistent en une expression de critres et dinstructions qui lorsquelles sont interprtes par le moteur de base de donnes renvoient des informations pouvant provenir de plusieurs tables.

    Par exemple dans Discothque, avec une table contenant des noms dalbums et des titres de chansons, et une autre contenant les mmes noms dalbums et leurs interprtes, on peut connatre les titres des chansons interprtes par un interprte donn.

    Formulaires : Cette rubrique permet daccder aux formulaires. Ces formulaires sont la partie principale de linterface utilisateur pour laccs aux donnes. Ils permettent ladministrateur de la base de donnes de crer des fentres permettant dorganiser un systme dinformation convivial et facile dutilisation.

    On pense par exemple un enchanement de menus permettant daccder des traitements de donnes spcifiques.

    Etats : Cette rubrique permet dimprimer ou de visualiser des donnes selon un cadre prdfini.

    Par exemple la cration automatique dune facture, en fonction des informations qui la composent.

    Pages : Cette rubrique permet de crer depages interactives daccs aux donnes, afin de pouvoir visualiser ces donnes sur un site Internet ou intranet.

    Par exemple, les pages permettront la consultation en ligne dune facture.

    Macros et Modules : Ces rubriques permettent le dveloppement doutils en Visual Basic. Il est parfois ncessaire de dvelopper des modules laide de ce langage lorsque certains traitements ne peuvent tre obtenus par dautres moyens.

    La barre verticale des menus permet des actions sur les objets des rubriques prcdentes : Ouvrir, Modifier, Nouveau

    Cette fentre est donc relativement similaire celle dAccess 97, hormis un changement daspect et lajout de la rubrique Pages.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    19

    II.1.2 - La cration dune table

    Figure 13 : La table Album en mode Cration de table

    Access XP permet le choix parmi 9 types de donnes diffrents : Texte, Mmo, Numrique, Date/Heure, Montaire, Numrotation automatique, Oui/Non, Objet OLE, Lien hypertexte.

    Les proprits des champs proposs sont similaires ceux trouvs dans Access 97, lexception de trois nouvelles proprits :

    Compression Unicode : Dans Access 97 chaque caractre est cod sur un octet alors que dans Access 2000 et ultrieur un caractre est cod sur deux octets. Pour compens cette augmentation de taille et rtablir des performances optimales Access XP possde cette proprit qui compressera les caractres.

    IME mode : permet de rentrer des donnes dans une langue asiatique.

    IME Sentence Mode : permet de rentrer des donnes dans une langue asiatique.

    On remarquera que ltablissement des masques de saisie qui tait un point difficile sous Access 97 est facilit sous Access XP grce la prsence dexemples aidant leur mise en place.

    Comme on peut le constater, les diffrences entre Access 97 et Access XP sont minimes au niveau de la cration des tables.

    II.1.3 - La cration des requtes avec lassistant Le mode QBE pour la cration des requtes est similaire celui dAccess 97.

    Nous allons utiliser le mme exemple que prcdemment pour illustrer notre propos: la requte RTitres73.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    20

    Figure 14 : La requte RTitres73 en mode QBE sous Access XP

    Une fois la requte cre grce au mode QBE, basculons en mode SQL afin dexaminer la syntaxe du code gnr.

    Figure 15 : La requte RTitres73 en mode SQL sous Access XP

    On remarquera que le code SQL gnr est moins encombr de parenthses inutiles et ainsi plus comprhensible.

    Cest le seul changement notable dans la cration des requtes entre Access 97 et Access XP.

    II.1.4 - La cration dun formulaire ayant pour source une requte

    Nous allons reprendre lexemple utilis au paragraphe I.1.4 pour illustrer la cration dun formulaire ayant pour source une requte.

    Aprs avoir cr le formulaire en question, il faut le lier avec la requte en utilisant la proprit source des proprits du formulaire.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    21

    Figure 16 : Cration d'un formulaire ayant pour source une requte : liaison avec la requte

    Dsormais le formulaire dpend de la requte RInfoAdhrents. Maintenant si lon dsire par exemple afficher sur le formulaire un champ dpendant de la requte, il faut cliquer sur les proprits du champ et slectionner la source de contrle dans longlet Donnes .

    Figure 17 : Zone de texte lie la requte

    Le processus de cration dun formulaire ayant pour source une requte est donc identique sous Access 97 et XP. Ce point reste donc un point difficile sous Access XP.

    II.1.5 - La cration dun sous-formulaire

    La cration dun sous-formulaire li un formulaire en mode cration avec Access XP se fait de manire aise. Il faut premirement insrer un champ de sous-formulaire en le slectionnant dans la bote outil comme le montre la figure ci dessous :

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    22

    Figure 18 - Slection d'un champ de sous-formulaire

    Aprs insertion du champ du sous-formulaire il faut slectionner les proprits de ce champ et slectionner le formulaire que lon souhaite insrer.

    Figure 19 - Proprits d'un sous-formulaire

    Puis pour modifier les champs pre fils, il faut slectionner les proprits du sous-formulaire puis choisir soit le champs fils soit le champ pre pour que la bote de dialogue qui dite les liens des champs des sous-formulaires apparaisse comme le montre la figure ci dessous. Puis il ne reste qu choisir les champs que lon dsire mettre en relation.

    Figure 20 - Editeur de liens des champs d'un sous-formulaire

    Remarque : un formulaire principal peut contenir autant de sous-formulaires que lon souhaite condition qu'ils soient placs dans le formulaire principal. Par contre il est

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    23

    possible dimbriquer sept sous-formulaires les uns dans les autres, contre deux en Access 97.

    II.1.6 - La cration des tats et des sous-tats Tout comme sous Access 97, la cration des tats et sous-tats est similaire celle des formulaires et sous-formulaires. Lassistant de cration des tats a t amlior sous Access XP rendant leur mise en place plus aise.

    II II .. 22 -- NNoouuvvee aauuttss ddee AAccccee ssss XXPPCette partie va nous permettre de prsenter les lments introduits par Microsoft dans le logiciel Access XP qui nexistaient pas dans Access 97. Nous avons relev trois innovations majeures dans Access XP.

    II.2.1 - Liens hypertextes Les liens hypertextes sont une source importante dinteractivit pour lutilisateur. Sous Access les liens hypertextes ont t largement tudis pour rpondre aux attentes du crateur de la base. Ainsi il est possible de faire des liens hypertextes vers tous lments de la base courante (tables, requtes, formulaires, tats, modules ), dune base extrieure mais aussi vers des documents offices et aussi vers des sites Internet et des adresses Email. De plus leurs mises en place sont aises : il suffit de cliquer sur longlet Insertion et slectionner Lien Hypertexte . Une boite de dialogue saffiche et nous guide dans le choix de la direction.

    Mais il est galement possible de faire des liens sur des lments dun formulaire, dun tat, dune table (zone de texte, champ). Pour cela il ne faut pas omettre dactiver la proprit Is Hyperlink comme le montre la figure ci-dessous :

    Figure 21 : Liens hypertextes

    Il est noter que les liens crs sur un tat ne sont pas visibles sous Access mais le sont sous dautres logiciels Office (Word, Excel) aprs exportation.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    24

    II.2.2 - Publication de page WEB Une des grandes nouveauts de Access XP par rapport Access 97 est la publication de pages Web dynamiques ou plutt devrait on dire pages daccs aux donnes . Ces pages sont des pages HTML lies aux donnes, visualisables l'aide de Microsoft Internet Explorer version 5 ou ultrieure. On peut galement distribuer par messagerie lectronique des pages de ce type contenant des donnes statiques ou dynamiques. Les pages d'accs aux donnes sont en gnral destines une utilisation sur intranet, mais il est galement possible de les dployer sur Internet, en tenant compte toutefois de certaines considrations. Ainsi les pages daccs aux donnes offrent les mmes possibilits quun formulaire ou un tat : on peut consulter, modifier, insrer des donnes dans une base de donnes installe sur le serveur. Nanmoins, on peut galement utiliser une page en dehors d'une base de donnes Microsoft Access, de manire ce que les utilisateurs puissent mettre jour ou afficher des donnes sur Internet ou un rseau intranet.

    Attention : les pages daccs aux donnes ne sont pas enregistres dans la base mais dans un dossier annexe dont on spcifie lemplacement. Mais les pages restent accessible partir de la base car Access cre automatiquement un lien dans la fentre de gestion. Il ne faut surtout pas supprimer ce lien si lon dsire garder laccs cette page. Malheureusement le chemin daccs ces pages est absolu et non relatif.

    II.2.2.1 Les diffrentes manires de crer une page daccs aux donnes

    Cration en mode cration :

    Pour crer une page daccs aux donnes en mode cration, il faut cliquer sur pages dans la fentre de gestion de la base de donnes et slectionner Crer une page daccs aux donnes en mode cration comme le montre la figure n 12 :

    Figure 22 - Cration d'une page d'accs aux donnes

    Apparat alors une page daccs aux donnes vide, une bote outils et une fentre contenant tous les champs de la base courante :

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    25

    Figure 23 - Interface pour la cration d'une page d'accs aux donnes

    Cration partir dun objet existant :

    Mais avec la version dAccess 2002 il est dsormais possible de crer une page daccs aux donnes partir dun objet existant. Il suffit denregistrer par exemple un formulaire au format page daccs aux donnes en cliquant sur longlet Fichier puis Enregistrer sous :

    Figure 24 - Fentre d'enregistrement

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    26

    On obtient une page HTML de ce type :

    Figure 25 - Aperu d'une page d'accs au donnes avec Internet Explorer

    Pour la suite de ltude des pages daccs aux donnes, nous traiterons le cas en mode cration.

    II.2.2.2 Etude des diffrentes fentres disponibles lors de la cration dune page daccs aux donnes en mode cration :

    La bote outil :

    On remarque que la bote outil est plus fournie que celle dun formulaire. Voici les options supplmentaires :

    Etendue : permet un autre mode daffichage dun texte.

    Texte dfilant : permet dinsrer un texte dfilant sur la page.

    Dvelopper : permet linsertion dune image.

    Dplacement entre les enregistrements : permet dinsrer une barre doutils qui manipule les enregistrements.

    Tableau crois dynamique office : permet linsertion dun tableau crois dynamique.

    Graphique office : permet linsertion dun graphique Office.

    Feuille de calcul Office : permet linsertion dune feuille de calcul office.

    Image - Lien hypertexte : permet dinsrer une image qui sera ractive et fonctionnera comme un lien hypertexte.

    Film : permet dinsrer une vido sur la page.

    La plupart de ces options ont pour but dagrmenter la page en dcors mais galement en utilisation. Ces fonctions facilitent la transformation dune page daccs aux donnes en une vritable page HTML la fois pratique et interactive.

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    27

    La liste des champs :

    La liste des champs est simplement un explorateur de tous les champs disponibles dans la base courante. Il suffit de choisir le champ dsir et de le glisser sur la page daccs aux donnes en construction pour ly insrer.

    La page daccs aux donnes :

    Le page daccs aux donnes est compos de diffrentes parties :

    Le corps : le corps constitue la surface de cration de base d'une page d'accs aux donnes sur laquelle on peut insrer une infinit de section ainsi que dagrments tel quun texte dfilant, une image, une vido

    Les sections : elles sont utilises pour afficher du texte, des donnes d'une base de donnes et des barres d'outils.

    En-tte et pied de groupe : utiliss pour afficher des donnes et calculer des valeurs.

    Dplacement entre les enregistrements Utilise pour afficher le contrle dplacement entre les enregistrements pour le niveau de regroupement. Une section de dplacement entre les enregistrements d'un groupe apparat aprs la section d'en-tte de groupe. Il est impossible de placer des contrles dpendants dans une section de dplacement entre les enregistrements.

    Lgende : elle permet laffichage des lgendes de zones de texte et autres contrles. Elle apparat juste devant l'en-tte de groupe.

    Chaque niveau de regroupement d'une page d'accs aux donnes possde une source d'enregistrements. Le nom de cette dernire est affich dans la barre de section pour chaque section utilise pour un niveau de regroupement.

    II.2.2.3 - Diffrents types de Page d'accs aux donnes

    tats interactifs

    Ce type de page d'accs aux donnes est souvent utilis pour consolider et grouper des informations stockes dans la base de donnes, puis pour publier des synthses des donnes. Bien que la page d'accs aux donnes puisse galement contenir des boutons de barre d'outils pour le tri et le filtrage des donnes, il n'est pas possible de modifier des donnes sur ce type de page.

    Saisie de donnes

    Ce type de page d'accs aux donnes est utilis pour afficher, ajouter et modifier des tats.

    Analyse des donnes

    Ce type de page d'accs aux donnes peut comprendre une liste de tableau crois dynamique, semblable un formulaire de tableau crois dynamique ACCESS ou un rapport de tableau crois dynamique EXCEL, qui permet de rorganiser les donnes afin de les analyser de diverses manires. Cette page pourrait contenir un graphique qui peut tre utiliser pour analyser des tendances, dtecter des modles et comparer des donnes dans la base de donnes. Elle pourrait galement contenir une feuille de calcul

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    28

    dans laquelle des donnes peuvent tre entrer et modifier, et utiliser des formules de calcul comme dans EXCEL.

    II.2.2.4 - Utilisation des Pages d'accs aux donnes

    Une page d'accs aux donnes est directement connecte une base de donnes. Lorsque les utilisateurs affichent la page d'accs aux donnes dans Internet Explorer, ils affichent leur propre copie de la page.

    Cela signifie que tout filtrage, tri et autre modification qu'il apportent la manire dont les donnes s'affichent (notamment les modifications qu'ils apportent dans un liste de tableau crois dynamique ou une feuille de calcul) n'affectent que leur copie de la page d'accs aux donnes.

    Toutefois, les modifications qu'ils apportent aux donnes elles-mmes (telles que la modification de certaines valeurs et l'ajout ou la suppression de donnes) sont stockes dans la base de donnes sous-jacente et sont donc accessibles toute personne consultant la base de donnes.

    Mais les pages daccs aux donnes peuvent galement tre utilises lintrieur

    dune base de donnes en tant que formulaire ou tat. Le choix rside dans les tches que le concepteur veut raliser. Voici les avantages des pages daccs aux donnes par rapport aux tats :

    Les pages dpendantes de donnes affichent les donnes en cours car elles sont connectes une base de donnes.

    Les pages sont interactives. Les utilisateurs peuvent filtrer, trier et afficher uniquement les enregistrements qui les intressent.

    Les pages peuvent tre diffuses lectroniquement par courrier lectronique. Les destinataires voient des donnes actualises chaque fois qu'ils ouvrent le message.

    II.2.3 - Prise en charge XML

    Access suit la vague dInternet. Pour la premire fois, Access XP prend en charge le format de fichier XML (eXtensible Markup Language).

    XML est un langage de description qui permet de dfinir dautres langages de description de page. Un des formats, sappuyant sur XML, est SVG, un format vectoriel qui joue un rle prpondrant sur Internet.

    XML peut tre utilis comme format de fichier universel. Il suffit denregistrer les donnes, correctement structures, et XML soccupe de leur description.

    Les donnes XML offrent un norme avantage : elles sont indpendantes de la plate-forme, ce qui permet de les lire sous Windows mais aussi sous dautres systmes tels que Linux, MacOs ou BeOs.

    Nous allons tudier lexportation au format XML de la table Album de Discothque :

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    29

    Figure 26 : La table Album en mode feuille de donnes

    Une fois la table Album ouverte, il faut choisir "Exporter" dans le menu Fichier. La fentre suivante souvre alors :

    Figure 27 : Fentre dexportation dAccess XP

    Il faut ensuite choisir "Documents XML" dans la zone Type de fichier, puis "Exporter tout"

    Figure 28 : Fentre dexportation XML

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    30

    Par dfaut lexportation cre deux fichiers :

    Un fichier XML contenant les donnes de la table lintrieur des balises XML

    Un fichier XSD contenant les dfinitions des balises XML

    Il est nanmoins possible dinclure les dfinitions des balises dans le fichier XML grce au bouton "Avanc" qui ouvre la fentre suivante :

    Figure 29 : Proprits de lexportation XML

    On choisira alors dans longlet "Schma" le bouton "Imbriquer le schma dans le document XML export".

    On obtient alors le fichier XML suivant, dcoup ici pour des raisons de lisibilit en une premire partie de dfinition des balises (document de schma) et une seconde partie renfermant les donnes au sein des balises prdfinies (document de donnes).

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    31

    Figure 30 : Premire partie du fichier XML gnr : Dfinition des balises

  • Chapitre 2 Manipulation des objets de base avec Access

    Partie Access XP

    32

    Figure 31 : Seconde partie du fichier XML gnr : Donnes de la table Album

  • Chapitre 3 Le langage de programmation de Access : VBA

    33

    CChhaappiittrree 33 -- LLee llaannggaaggee ddee pprrooggrraammmmaattiioonn ddeeAAcccceessss :: VVBBAA

    Aprs avoir abord les diffrences et nouveauts apportes par un passage Access XP dans le cadre de linterface normale de travail dAccess, nous allons maintenant tudier les changements dans linterface de programmation dAccess : VBA.

    II -- IInnttrroodduuccttiioonnLe VBA (Visual Basic for Applications) est la rponse de Microsoft aux besoins des dveloppeurs de base de donnes en terme de programmation.

    Si les assistants prsents prcdemment permettent au plus grand nombre de crer des applications simples de manire intuitive, ils ne permettent pas de raliser certaines oprations plus complexes. Cest pourquoi les dveloppeurs dapplications de base de donnes professionnelles ont besoin dune autre interface, une interface de programmation brute leur permettant deffectuer nimporte quel traitement : cest le VBA dAccess.

    Grce au VBA dans Access, on peut totalement contrler sa base de donnes et effectuer des oprations complexes, comme par exemple recopier le contenu dune table dans une autre base afin den archiver les donnes. Mais cest surtout dans la cration de linterface entre lutilisateur et la base de donnes, c'est--dire principalement au travers des formulaires, que le VBA est le plus utilis. Il permet par exemple de crer des formulaires permettant de manipuler les donnes contenues dans le systme dinformation.

    Afin de pouvoir crer de tels formulaires, le dveloppeur a besoin daccder aux enregistrements contenus dans le systme au travers du VBA. Pour ce faire le langage sappuie sur des bibliothques qui sont un ensemble de mthodes daccs aux donnes, de dfinition de structure et de gestion de scurit.

    Avant Access 2000, Microsoft avait dvelopp un modle objet daccs aux donnes baptis DAO (Data Access Objects). Ce modle tait bas sur les pilotes ODBC2 afin daccder aux sources de donnes.

    Depuis Access 2000, Microsoft dveloppe un nouveau modle objet standard daccs aux donnes : ADO (ActiveX Data Objects). Ce modle est bas sur OLE DB (Object Linking and Embedding DataBase).

    Chaque application manipule des documents (au sens large : texte, images, sons, etc.) qui sont des collections d'objets. Une application doit pouvoir charger des objets, les afficher, en permettre la modification... Si l'objet n'a pas une structure que l'application peut traiter en natif, le systme d'exploitation charge l'application associe cet objet, l'intrieur de la premire application. C'est la technologie OLE (Object Linking and Embedding). OLE DB est une extension de cette technologie aux bases de donnes. Quand Access rencontre une base de donnes incompatible, il utilise lapplication associe la base de donnes afin de pouvoir utiliser ce quelle contient. Dans un certain sens, un fournisseur OLE DB est similaire un pilote ODBC qui fournit un mcanisme uniforme d'accs des donnes relationnelles. Les fournisseurs OLE DB fournissent non seulement un

    2 ODBC signifie Open Database Connectivity. Il s'agit d'un ensemble de fonctions de haut niveau qui permettent de travailler avec une base de donnes relationnelle au travers dune interface identique quelque soit le type de cette base.

  • Chapitre 3 Le langage de programmation de Access : VBA

    34

    mcanisme uniforme d'accs aux donnes relationnelles, mais galement aux donnes non relationnelles.

    ADO est une couche supplmentaire au dessus de OLE DB, celui-ci tant jug encore trop complexe pour tre utilis par les dveloppeurs. ADO est linterface de programmation dOLE DB.

    Cette migration vers ADO a t dcide par Microsoft car DAO et ODBC ne permettent daccder qu des donnes contenues dans des bases de donnes Microsoft Access et dans certains autres types spcifiques (ISAM par exemple). De plus, le modle objet ADO est compos de moins d'objets et plus facile utiliser.

    Figure 32 : Mcanisme de fonctionnement d'OLE DB

    Le but de ADO (et de OLE DB, sa couche sous-jacente) est de permettre terme un accs uniforme aux donnes contenues dans des fichiers crs avec nimporte quel outil de traitement de donnes.

    II .. 11 -- CCoonnss qquuee nncceess ddaannss ll uu tt ii ll ii ssaa tt iioo nn ddee llaa ffeenn tt rree VVBBAAddAAcccc eessss ::

    Comme nous lavons vu prcdemment, Access utilise des bibliothques pour interprter les instructions contenues dans le code VBA. Il est donc ncessaire dindiquer Access quelle bibliothque il doit utiliser.

    Cest le but de la fentre Rfrences :

  • Chapitre 3 Le langage de programmation de Access : VBA

    35

    Figure 33 : La fentre Rfrences de Visual Basic

    Cette fentre est situe dans le menu OutilsRfrences de la fentre Visual Basic de Access XP. Pour accder cette fentre Visual Basic, il faut ouvrir depuis la fentre principale dAccess un module de code ou la partie de code dun formulaire. La fentre qui souvre alors est la fentre Microsoft Visual Basic.

    Elle permet dindiquer Access XP quelle bibliothque utiliser lorsquil doit interprter du code VBA. En effet Access, au travers du VBA sappuie sur ces bibliothques pour accder aux donnes et les traiter.

    Afin de permettre aux bases de donnes contenant des modules crits en DAO de fonctionner, Microsoft a gard dans la version XP de Access la bibliothque DAO. Dans ces circonstances, il est ncessaire de choisir la rfrence :

    [Microsoft DAO 3.6 Object Library]

    Si lon souhaite dvelopper des modules en ADO, il est ncessaire de choisir les rfrences :

    [Microsoft ActiveX Data Objects 2.7 Library]3

    [Microsoft ADO Ext. 2.7 for DDL And Security]

    [Microsoft Jet and Replication Objects 2.6 Library] (Accessoire)

    Nous verrons bientt quels sont les rles de ces diffrents composants.

    Attention lordre des bibliothques dans cette fentre rfrences En effet, lorsque Access aura besoin dune bibliothque pour interprter une mthode dun objet par exemple, il utilisera de prfrence les bibliothques situes en haut de la liste. Par exemple, lobjet Recordset est dfini en DAO et aussi en ADO. Ainsi, en fonction de la position dans la bibliothque correspondante, le recordset cr par le code suivant : Dim record As Recordset sera soit un recordset ADO (ce sera le

    3 Access XP contient les rfrences ADO 2.0 2.7. Afin de pouvoir utiliser tous les exemples de cet expos nous vous recommandons de choisir la rfrence ADO 2.7.

  • Chapitre 3 Le langage de programmation de Access : VBA

    36

    cas avec la liste de rfrences ci-dessus) ou un recordset DAO, deux objets diffrents nayant pas les mmes mthodes ou fonctions.

    Dans un souci de scurit et de stabilit du code dvelopp, nous recommandons de spcifier le type de modle utilis afin dviter des anomalies de fonctionnement provenant de lordre de priorit des rfrences. Nous crirons ainsi lexemple prcdent Dim record As ADODB.Recordset ou Dim record As DAO.Recordset en fonction du cas choisi.

    Pour la mme raison, il est aussi dconseill de cocher la fois des rfrences DAO et ADO dans la fentre Rfrences.

    II .. 22 -- UU tt ii ll iissaa tt iioonn dd ee ll aa iidd ee dd ee VVBBAAAfin de nous aider au dveloppement dapplications en VBA, Microsoft met notre disposition une aide trs fournie. Cependant, cette aide est constitue de mises jour successives depuis Access 97, et on y trouve parfois des redondances dinformations voire des informations obsoltes.

    Pour accder cette aide, il faut ouvrir depuis la fentre principale dAccess un module ou la partie de code dun formulaire. Une seconde fentre souvre alors intitule "Microsoft Visual Basic" dans lequel se trouve le code de notre application.

    Une fois dans cette fentre, une pression sur la touche F1 permet douvrir laide de Visual Basic.

    Afin de permettre une navigation aise, nous allons donner ci-dessous quelques points dentre dans cette aide :

    Pour accder au modle objet ADO, qui permet par la suite de retrouver chaque mthode et proprit des objets ADO, on tapera dans la zone "aide intuitive" les mots cls : "modle objet ADO" (on fera de mme pour le modle objet ADOX).

    Dune manire gnrale, utiliser le mot-cl Nouveauts suivi du modle objet souhait (ADO, ADOX, ADO MD) permet daccder une page sommaire qui contient des liens vers des exemples de code en VBA.

    Pour rechercher un objet, une mthode ou une proprit spcifique, on spcifiera tout dabord ADO puis la mthode ou proprit rechercher, par exemple "ADO find". Le fait de spcifier tout dabord ADO permet de navoir des rsultats ne contenant que les lments ADO et non un mlange ADO/DAO qui sme vite la confusion. Par exemple si on tape seulement "find", les rsultats renvoys contiendront FindFirst, FindNext qui sont des mthodes DAO obsoltes pour le dveloppeur ADO.

    Cette coexistence des rfrences ADO et DAO est lorigine de nombreuses confusions. Nous vous conseillons donc de toujours bien vrifier que les rsultats rendus correspondent bien la bibliothque que vous utilisez pour votre dveloppement.

    IIII -- PPrrsseennttaattiioonn ddee AADDOONous allons dtailler dans cette partie le modle daccs aux donnes ADO.

    Pour cela, nous ne nous appuierons pas sur une comparaison stricte entre les deux versions comme dans le chapitre II car cela napporterait pas dlments significatifs.

  • Chapitre 3 Le langage de programmation de Access : VBA

    37

    Nous tablirons cependant des correspondances4 lorsquelles seront ncessaires afin que le dveloppeur habitu lenvironnement de programmation dAccess 97 puisse facilement crer ses applications en ADO.

    Afin de proposer les mmes fonctionnalits de manipulation des donnes que DAO, ADO contient plusieurs sous-modles objets :

    ADO DB : Le modle ADO DB (ou ADO par abus de langage) permet lapplication client daccder et de manipuler les donnes au travers dune interface OLE. ADO DB regroupe les objets permettant de se connecter une source de donnes, de lire, dajouter ou de mettre jour les donnes.

    ADOX (Microsoft ADO Extensions for DDL and Security) : Le modle ADOX regroupe des objets permettant la dfinition des structures de donnes (tel tables, vues ou index) et ladministration de la scurit et des permissions daccs aux diffrents utilisateurs et groupes dutilisateurs.

    ADO MD (MultiDimensionnal) : Le modle ADO MD permet la manipulation de source de donnes multidimensionnelles. Nous naborderons pas cette partie trs technique dans cet expos.

    RDS (Remote Data Service) : RDS est un dispositif dADO qui permet de transfrer des donnes dun serveur vers une application client, de manipuler les donnes depuis le client puis de retourner les modifications vers le serveur. Nous ne dtaillerons pas ce modle qui est spcifique lenvironnement client serveur dans cet expos.

    JRO (Microsoft Jet and Replication Objects) : Le modle JRO regroupe les objets, proprits et mthodes pour crer, modifier et synchroniser des rpliques de base de donnes. A la diffrence de ADO et ADOX, le modle JRO ne peut tre utilis quavec des sources de donnes Microsoft Jet Database. Nous ne nous intresserons pas ce modle dans cet expos, car il na pas dutilit pour les traitements que nous effectuerons.

    Le moteur de base de donnes Microsoft Jet ntant plus dvelopp aujourdhui par Microsoft, il en est de mme du modle JRO.

    11 -- MMoodd llee oobb jjee tt AADDOO ::Abordons dsormais ltude des objets daccs aux donnes composant le modle ADO5.

    Il existe cinq objets diffrents dans le modle objet ADO de la rfrence ADO 2.7.

    Lobjet Connection permet d'tablir les connexions entre le client et la source de donnes.

    4 Ces correspondances entre les mthodes DAO et ADO sont dtailles sous forme dun tableau dans lannexe A : "DAO vers ADO Aide mmoire".

    5 Ce modle objet ADO est dtaill dans lannexe B :"Modle objet ADO dtaill" la fin de ce rapport.

  • Chapitre 3 Le langage de programmation de Access : VBA

    38

    Lobjet Command permet de raliser des commandes, telles que des requtes SQL ou des mises jour d'une base.

    Lobjet Recordset permet de voir et de manipuler les rsultats d'une requte

    Lobjet Record reprsente une colonne de donnes. Il est conceptuellement similaire un recordset une seule colonne.

    Lobjet Stream reprsente un flux de donnes binaires ou de texte.

    22 MMoodd llee oo bbjjee tt AADDOOXXCe modle objet ADOX permet de complter le prcdent (ADO).

    Il permet entre autre de dfinir les schmas de structure de la base de donnes et de fixer des autorisations daccs la base de donnes en fonction dun utilisateur particulier ou dun groupe dutilisateurs.

    Lobjet Catalog contient des collections qui dcrivent le schma dune base de donnes.

    Lobjet Table reprsente une table, incluant les colonnes, les index et les cls quelle contient.

  • Chapitre 3 Le langage de programmation de Access : VBA

    39

    Lobjet Index reprsente un index dune table de la base de donnes.

    Lobjet Key reprsente un champ cl primaire, trangre ou unique dune table de la base de donnes.

    Lobjet Column reprsente une colonne dune table, dun index ou dune cl.

    Lobjet Group reprsente un groupe dutilisateurs avec ses permissions daccs lintrieur dune base de donnes scurise.

    Lobjet User reprsente un compte dutilisateur avec ses permissions daccs lintrieur dune base de donnes scurise.

    Lobjet Procedure reprsente une procdure stocke.

    Lobjet View reprsente un ensemble denregistrements filtrs ou une table virtuelle.

    Chacun des objets Table, Index et Colonnes a une collection standard de Proprits.

    IIIIII -- UUttiilliisseerr AADDOO aavveecc VVBBAAUne fois ces prcisions sur les modles daccs aux donnes mis en place par Access XP effectues, nous allons dans cette partie nous attacher lutilisation lintrieur de nos modules VBA de ces objets.

    Afin dillustrer lemploi de ces objets, et de leurs mthodes et proprits, abords dans cette partie, nous essaierons dutiliser deux sortes dexemples :

    un exemple propre chaque mthode explique car si elle apparat dans cette partie cest quelle nous semblait importante et quelle a donc besoin dtre illustre

    un exemple tir de la cration de la base de donnes Discothque, support des travaux pratiques, lorsque lutilisation de cette mthode est requise.

    II II II .. 11 CCoonnnn eecctt iioo nn ((AADD OO)) ee tt CCaa ttaa lloogg ((AADD OOXX ))Lobjet connection est le premier objet manipul par le dveloppeur puisquil permet de se connecter une source de donnes.

    III.1.1 - Ouvrir une connexion une base de donnes existante En DAO pour ouvrir une connexion une base de donnes sous Access 97 on utilisait DBEngine.OpenDatabase (). En ADO on doit crer une connexion cette base de donnes ou toute autre source de donnes. Cest pourquoi il existe un objet connection, qui permet de dfinir une session pour un utilisateur sur une source de donnes spcifique. Cet objet connection doit tre dfini puis cr :

    Dim cnn As ADODB.Connection Set cnn = New ADODB.Connection

  • Chapitre 3 Le langage de programmation de Access : VBA

    40

    Il doit ensuite tre affect. On utilise la mthode Open de Connection :

    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=.\NorthWind.mdb;"

    Cet exemple passe deux paramtres la mthode Open :

    Le premier est une chane contenant le driver OLE DB utiliser pour louverture, soit : "Provider=Microsoft.Jet.OLEDB.4.0;" avec des bases de donnes Access. La configuration de cette chane peut aussi tre effectue par la proprit Connection String.

    Le second est aussi une chane contenant le chemin vers la base ouvrir, dans cet exemple Microsoft : "Data Source=.\NorthWind.mdb;"

    III.1.2 - Accder la base de donnes courante Lorsque du dveloppement de modules en VB, on a souvent besoin daccder la base de donnes ouverte sous Access, support de notre code. Afin de simplifier cette ouverture frquente, on utilise la proprit AccessConnection de lobjet CurrentProject pour obtenir une connexion la base de donnes courante.

    Exemple : Cration dun accs la base de donnes courante :

    Sub ADOAcceder_a_la_BD_Courante () Dim cnn As New ADODB.Connection Set cnn = CurrentProject.AccessConnection

    End Sub Au sein de nimporte quelle fonction dans Discothque lorsque nous voudrons crer une connexion Discothque, nous emploierons :

    Dim connexion As New ADODB.Connection Set connexion = CurrentProject.AccessConnection

    III.1.3 - Dfinition du schma de la base de donnes Pour crer proprement dit une nouvelle base de donnes on utilise la mthode Create de lobjet Catalog dADOX.

    Sub ADOCreationDeBD() Dim cat As New ADOX.Catalog cat.Create "Provider=Microsoft.Jet.OLEDB.4.0;" "Data Source=.\New.mdb;"

    End Sub

    Pour crer une nouvelle table dans la base de donnes couramment ouverte, on utilise lobjet Catalog de ADOX. Lobjet Catalog correspond lobjet Database en DAO.

    Sub ADOCreationDeTable() Dim cat As New ADOX.Catalog Dim table As New ADOX.Table

    ' Ouvrir le catalogue cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" & _

    "Data Source=.\New.mdb;"

  • Chapitre 3 Le langage de programmation de Access : VBA

    41

    ' Crer un nouvel objet Table With table

    .Name = "Contacts"

    .Columns.Append "ContactName", adVarWChar

    .Columns.Append "Phone", adVarWChar

    .Columns("Notes").Attributes = adColNullable End With

    ' Ajouter la nouvelle table la base de donnes cat.Tables.Append table

    ' Fermeture des connexions Set cat = Nothing

    End Sub Il est ncessaire de crer les champs et de les ajouter la nouvelle table avant dajouter la nouvelle table la collection de tables de lobjet Catalog.

    Les noms des types de donnes sont diffrents en ADO. Voici les correspondances avec les types de donnes DAO:

    Types de

    donnes DAO Types de donnes

    ADO correspondant

    DbBinary adBinary DbBoolean adBoolean DbByte adUnsignedTinyInt DbCurrency adCurrency DbDate adDate DbDecimal adNumeric DbDouble adDouble dbGUID adGUID dbInteger adSmallInt dbLong adInteger dbLongBinary adLongVarBinary dbMemo adLongVarWChar dbSingle adSingle dbText adVarWChar

    II II II .. 22 RReeccoo rrddssee ttLes recordsets permettent daccder et de manipuler les enregistrements.

    III.2.1 - Ouvrir un recordset avec ADO Comme en DAO, il existe de nombreux moyens douvrir un recordset :

    Avec la mthode Execute de lobjet Connection

    Avec la mthode Execute de lobjet Command

    Avec la mthode Open de lobjet Recordset

  • Chapitre 3 Le langage de programmation de Access : VBA

    42

    Il existe de nombreux paramtres permettant de spcifier le type de recordset que lon souhaite ainsi crer.

    Les deux tableaux suivants font la correspondance entre les anciennes mthodes de spcification en DAO et celles utilises en ADO, le premier sattachant aux types de recordset crer et le second aux proprits de verrouillage du recordset :

    Types de recordset DAO Proprit ou paramtres du recordset ADO correspondant

    DbOpenDynaset CursorType=adOpenDynamic

    DbOpenSnapshot CursorType=adOpenStatic

    DbOpenForwardOnly CursorType=adOpenForwardOnly

    DbOpenTable CursorType=adOpenDynamic, Options=adCmdTableDirect

    Valeurs LockType du recordset DAO Valeur LockType du Recordset ADO correspondant

    DbReadOnly adLockReadOnly

    DbPessimistic adLockPessimistic

    DbOptimistic adLockOptimistic

    Exemple : Ouverture dun recordset seulement vers lavant, en lecture seule:

    Sub ADOOuvrirRecordset()

    Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset Dim fld As ADODB.Field

    ' Ouvrir la connexion cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

    "Data Source=.\NorthWind.mdb;"

    ' Ouverture du recordset avec dfilement en avant et en lecture seule rst.Open _

    "SELECT * FROM Customers WHERE Region = 'WA'", _ cnn, adOpenForwardOnly, adLockReadOnly

    ' Fermer le recordset rst.Close

    End Sub

    Dans Discothque :

    record.Open "SELECT * FROM Code", connexion, adOpenKeyset, adLockOptimistic

  • Chapitre 3 Le langage de programmation de Access : VBA

    43

    III.2.2 - Dterminer la position courante dun recordset Tout comme en DAO, il existe en ADO la proprit AbsolutePosition qui permet de connatre le numro du record sur lequel pointe le curseur en cours. Cependant, il y a deux points importants retenir :

    Tout dabord, le comptage grce la proprit AbsolutePosition en ADO commence un ; cest dire que le premier enregistrement porte le numro un, tandis quen DAO le premier enregistrement portait le numro zro.

    Ensuite, il est ncessaire de configurer la proprit CursorLocation adUseClient. En effet, si la proprit nest pas spcifie ou est fixe adUseServer, la proprit AbsolutePosition renverra adUnknown (-1), car Jet ne peut retrouver linformation avec cette proprit.

    ADO propose aussi une proprit PercentPosition qui retourne un pourcentage reprsentant la position approximative du record lintrieur du Recordset.

    III.2.3 - Trouver des enregistrements dans un recordset ADO possde deux mcanismes comme DAO pour rechercher un Recordset : Find et Seek.

    Si Seek est en gnral plus performant, il ne peut tre utilis quavec des objets Recordset qui ont des Index associs. De plus, pour les bases de donnes Microsoft Jet, seuls les objets Recordsets bass sur une table avec un index supportent Seek.

    III.2.3.1 - La mthode Find

    DAO inclut quatre mthodes : FindFirst, FindLast, FindNext, FindPrevious.En ADO il existe une seule mhode : Find. La recherche dbute toujours partir de la position courante dans le recordset. La mthode Find accepte des paramtres qui permettent de spcifier le sens de la recherche (en avant, en arrire) ainsi quune adresse depuis le record courant pour spcifier o commencer la recherche.

    Mthode DAO Find ADO avec SkipRows Direction de la recherche ADO

    FindFirst 0 adSearchForward (Si la position courante est diffrente du premier record, utiliser MoveFirst avant Find)

    FindLast 0 adSearchBackward (Si la position courante est diffrente du premier record, utiliser MoveLast avant Find)

    FindNext 1 adSearchForward

    FindPrevious 1 adSearchBackward

    Exemple : Trouver un record en ADO en spcifiant un critre de recherche:

    Sub ADOFindRecord()

    Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset

  • Chapitre 3 Le langage de programmation de Access : VBA

    44

    ' Ouvrir la connexion cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

    "Data Source=.\NorthWind.mdb;"

    ' Ouvrir le recordset rst.Open "Clients", cnn, adOpenKeyset, adLockOptimistic

    ' Trouver le premier client dont le pays est USA rst.Find "Pays='USA'"

    ' Fermer le recordset rst.Close

    End Sub Remarque : En ADO, le critre de recherche spcifi dans la commande Find ne peut pas porter sur plus dune colonne.

    Tandis quen DAO on pouvait effectuer des recherches sur de multiples colonnes en les spcifiant dans le critre (le paramtre critre tait considr come une clause WHERE en SQL), il faut en ADO utiliser la proprit Filter afin de crer une vue sur le Recordset ne contenant que les records correspondants au critre.

    Lexemple de Discothque ou lon utilise la proprit Filter (dtaille plus loin) pour crer un recordset utilisable avec Find :

    record.Filter = "[Code] = '" & UserType & "'"and "[codeAdherent] = '" & passwd & "' record.Find "CodeAdherent= '" & passwd & "'" Par ailleurs, DAO et ADO ont un comportement diffrent dans le cas o Find ne trouve pas de correspondance. En DAO, la proprit NoMatch est mise True et le record courant est non-dfini. En ADO, si aucune correspondance nest trouve, le record courant est positionn soit :

    Avant le dbut du Recordset si on cherche en avant (adSearchForward)

    Aprs la fin du Recordset si on cherche en arrire (adSearchBackward).

    Il conviendra donc dutiliser les proprits

    EOF avec adSearchForward

    BOF avec adSearchBackward

    afin de dterminer si un record correspondant a t trouv.

    Remarque : ADO ne reconnat pas loprateur Is, ni Is Not. ADO utilise les oprateurs = et pour remplacer les oprateurs prcdents.

    Exemple :

    DAO: "ColumnName Is Null" "ColumnName Is Not Null"

    ADO: "ColumnName = Null"

  • Chapitre 3 Le langage de programmation de Access : VBA

    45

    "ColumnName Null"

    III.2.3.2 - La mthode Seek

    Exemple : Le code suivant prsente une recheche avec Seek en ADO

    Sub ADOSeekRecord() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset

    ' Ouvrir la connexion cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

    "Data Source=.\NorthWind.mdb;"

    ' Ouvrir le recordset rst.Open "Order Details", cnn, adOpenKeyset, adLockReadOnly, _

    adCmdTableDirect

    ' Selectionner lindex utilis pour trier les donnes dans le recordset rst.Index = "PrimaryKey"

    ' Recherche de la commande correspondante aux critres rst.Seek Array(10255, 16), adSeekFirstEQ

    ' Fermer le recordset rst.Close

    End Sub

    La mthode Seek base sa recherche sur un index.Il est donc important de spcifier quel index le moteur de base de donnes doit utiliser pour la recherche. Par dfaut, Microsoft Jet utilise la cl primaire de la relation considre.

    Dans lexemple, la fonction Array (appartenant la bibliothque Visual Basic For Applications) est utilise pour spcifier un critre de recherche sur plus dune colonne (recherche multicritres). Si la recherche ne porte que sur une seule colonne, il nest pas ncessaire dutiliser Array.

    Pour dterminer si un record correspondant au critre a t trouv, il faut utiliser les proprits de position du record courant EOF et BOF comme avec la mthode Find.

    Remarque : La mthode Seek ne fonctionne correctement quavec des bases de donnes Microsoft Jet 4.0. Tous les autres formats entraneront une erreur : run-time error . Il est possible de tester le recordset ouvert grce la mthode Supports de lobjet Recordset, afin de dterminer si la mthode Seek est disponible ou non pour le recordset courant.

  • Chapitre 3 Le langage de programmation de Access : VBA

    46

    III.2.4 - Filtrer et Trier les donnes dans un recordset ADO aborde ces fonctions sur les Recordset dune manire diffrente que DAO. Alors quen DAO ces proprits Filter et Sort sappliquaient aux recordsets ouverts aprs leur dfinition, ADO applique ces proprits au recordset duquel on appelle ces proprits.

    III.2.4.1 - Utiliser la proprit Filter (Filtre):

    Exemple : Filtrer un recordset en fonction de critres dfinis dans une clause SQL

    Sub ADOFilterRecordset()

    Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset

    ' Ouvrir la connexion cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

    "Data Source=.\NorthWind.mdb;"

    ' Ouvrir le recordset rst.Open "Customers", cnn, adOpenKeyset, adLockOptimistic

    ' Filtrer le recordset pour avoir uniquement les clients amricains ayant un fax rst.Filter = "Country='USA' And Fax Null" Debug.Print rst.Fields("CustomerId").Value

    ' Fermer le recordset rst.Close

    End Sub La proprit Filter dADO permet de crer une vue temporaire qui peut tre utilise pour localiser un record, ou un ensemble de records, correspondants au(x) critre(s) de recherche au sein du Recordset.

    Quand un filtre est appliqu un Recordset grce Filter, la proprit RecordCount renvoie le nombre de records lintrieur de cette vue filtre du Recordset.

    Le filtre peut tre enlev en configurant la proprit Filter sur adFilterNone.

    III.2.4.2 - Utiliser la prorit Sort (Tri)

    Exemple : Utiliser Sort pour ordonner les records dans un Recordset

    Sub ADOSortRecordset() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset

    ' Ouvrir la connexion cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _

    "Data Source=.\NorthWind.mdb;"

  • Chapitre 3 Le langage de programmation de Access : VBA

    47

    ' Ouvrir le recordset rst.CursorLocation = adUseClient rst.Open "Customers", cnn, adOpenKeyset, adLockOptimistic

    ' Tri du recordset selon le pays et la rgion, tous deux en ordre croissant rst.Sort = "Country, Region" Debug.Print rst.Fields("CustomerId").Value

    ' Fermer le recordset rst.Close

    End Sub Remarque : Pour utiliser la proprit Sort, il faut spcifier la proprit CursorLocation adUseClient avant douvrir le Recordset.

    III.2.5 - Ajouter ou modifier des enregistrements Aprs louverture dun recordset modifiable (Options adOpenKeyset, adLockOptimistic de Open), on utilisera la mthode AddNew afin dinsrer un nouvel enregistrement.

    Exemple :

    Sub ADOAjouterRecord() Dim cnn As New ADODB.Connection Dim rst As New ADODB.Recordset

    cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=.\NorthWind.mdb;" rst.Open "SELECT * FROM Customers", cnn, adOpenKeyset, adLockOptimistic

    ' Ajouter un nouveau record rst.AddNew

    ' Spcifier les valeurs des champs rst!CustomerId = "HENRY" rst!PostalCode = "98107"

    ' Enregistrer les changements faits dans lenregistrement en cours du recordset rst.Update

    ' Fermer le recordset rst.Close

    End Sub Le curseur du recordset est automatiquement positionn sur lenregistrement nouvellement insr avec AddNew.

  • Chapitre 3 Le langage de programmation de Access : VBA

    48

    Il est possible de passer les valeurs de lenregistrement en paramtres de AddNew ;il faudra alors dcrire un tableau (Array) de champ, puis un tableau de valeurs :

    Dans lexemple prcdent :

    rst.AddNew Array("CustomerId", "PostalCode"), Array("HENRY", "98107") rst.Update

    Pour modifier les donnes dun recordset ouvert, on accde au champ changer par la proprit Value de Fields ou directement par la syntaxe ! :

    Dans lexemple prcdent, la place de AddNew :

    ' Update the CustomerId of the first record rst.Fields("CustomerId").Value = "New Name" rst!PostalCode = "New PostalCode"

    Il nest pas ncessaire en ADO dappeler la mthode Update pour confirmer les changements. Ils sont automatiquement pris en compte lorsquon se dplace dans le recordset vers un autre enregistrement.

    Grce ces mthodes dtailles, il est possible deffectuer la plupart des traitements courants pour lesquels lutilisation de VBA est ncessaire.

    Cependant, des annexes sont disponibles la fin de ce rapport pour celui qui souhaite de plus amples prcisions. A ce titre, la version informatique de ce rapport comporte de nombreux liens hypertextes vers le site Internet de rfrence qui nous a permis dcrire ce chapitre : Microsoft developper network, o il est possible de trouver de nombreuses explications et exemples de code.

  • 49

    CCoonncclluussiioonn

    Nous avons vu lors de ladaptation des travaux pratiques que les diffrences entres Access XP et Access 97 sont peu significatives. Peu de nouveauts ont t apports la cration des tables, requtes, formulaires, tats...

    Toutefois Microsoft Access a su suivre lvolution concernant le Web et mettre disposition un nouvel objet dans la cration dune base de donnes en loccurrence les pages daccs aux donnes. Ils ont galement instaur la prise en charge du XML, standard universel de prsentation des donnes. Et nous avons vu que les pages daccs aux donnes sont non seulement une source pour Internet mais elles peuvent aussi tre utilises au sain mme dune base en remplacement dun formulaire ou dun tat.

    Microsoft Access a galement rvolutionn le mode daccs aux donnes en changeant radicalement de technologie : passant de DAO (Data Access Objects) ADO (ActiveX Data Objects). Comme nous lavons vu la technologie ADO facilite laccs aux donnes en crant une mthode unique contrairement la technologie DAO qui ncessitait un accs particulier pour chaque type dobjet.

    Dautre part, il nous parat important de signaler que laccs des sources dinformations concernant cette tude est trs difficile. En effet peu voire pas douvrages traitent des changements et volutions dAccess. Ceci fut trs contraignant pour la ralisation de ce projet. Bien que le thme de ce projet est intressant et instructif (car la technologie ADO est galement utilise par la technologie ASP (Active Server Pages) dveloppe par Microsoft pour la cration de site Internet en lien avec des bases de donnes) la difficults daccs aux sources et laide obsolte dAccess ont largement contribu la difficult de ralisation de ce projet.

    De plus la plupart de nos sources dinformations sont en anglais car elles proviennent essentiellement du site Microsoft Developper Network entirement en anglais.

    En rsum lutilisation dAccess XP pour lutilisateur non initi qui connat le mode de fonctionnement dAccess 97 ne sera pas trop boulevers. Alors que lutilisateur confirm qui dsire raliser de la programmation en VBA peut se retrouver confront une incapacit de cration tant les technologies sont diffrentes.

    Access XP est loin dtre un logiciel parfait mais ses volutions sont remarquables. Il est tout de mme regrettable que Microsoft Access ne fasse voluer son aide que par lajout rpt dinformation sans relles mises jour.

  • 51

    BBiibbll iiooggrraapphhiiee

    Laide de Access XP nous a aussi t trs utile, mme si la navigation lintrieur de cette aide nest pas facile car elle a t complte sans cesse depuis le dbut dAccess ce qui conduit parfois des redondances dinformations voire des informations obsoltes.

    Afin dcrire la partie programmation VBA de ce rapport nous avons essentiellement utilis le centre de documentation en ligne MSDN (Microsoft Developper Network) ladresse www.msdn.com. Ce site est trs fourni en informations sur la technologie ADO ainsi quen exemples de codes facilitant la mise en pratique des informations recueillies. Cependant, il est entirement en anglais, et si une version franaise existe (www.microsoft.com/france/msdn/), elle est beaucoup moins dveloppe et mise jour. Nous recommandons donc de sappuyer sur le site amricain beaucoup plus fourni.

    Nous avons par ailleurs utilis aussi les forums de discussions regroupant des dveloppeurs.

    Enfin nous nous sommes galement appuy sur deux livres :

    - HASENFRATZ JM

    ACCESS 2002 Grer ses bases de donnes

    Grenoble, PUG, 2002

    Cet ouvrage naborde peu (voire pas) les nouveauts dAccess 2002 et encore moins la programmation VBA.

    - JONES E

    ACCESS 2002 et VBA Le guide du dveloppeur

    Paris, OEM, 2002

    Cet ouvrage, bien que trs fourni, survole compltement la relle nouveaut de programmation VBA en loccurrence le modle ADO.

    Il est prciser quaucun ouvrage distribu naborde la grande nouveaut apporte par ADO ce qui est trs regrettable. Mais ce phnomne nest pas exceptionnel car les ouvrages dits par Microsoft ou autres sont rarement mis jour.

  • 53

    RReemmeerrcciieemmeennttss

    Nous tenons remercier Mme Sylvie Damy, tutrice de ce projet pour ses conseils, ses orientations et ses relectures tout au long de llaboration de ce projet.

    Nous tenons aussi remercier John John, ingnieur-support chez Microsoft qui nous a ouvert les portes de la documentation ADO sur le site MSDN.

  • Annexe A DAO vers ADO Aide mmoire

    55

    AAnnnneexxeess

    AAnnnneexxee AA :: DDAAOO vveerrss AADDOO -- AAiiddee--mmmmooiirreeLe tableau ci-dessous est un aide-mmoire destin tablir des correspondances entre les mthodes et proprits de DAO et celles de ADO, ADOX et JRO. Toutefois, les correspondances entre les mthodes et proprits numres ci-dessous ne sont pas forcment directes ni symtriques. Il peut exister des diffrences, lgres ou mme nettes, entre les mthodes et proprits mises en parallle. Pour plus d'informations sur les proprits et mthodes de ADO, ADOX et JRO, veuillez consulter la documentation relative au modle objet Objet DAO Proprit/Mthode Modle :

    ADO/ADOX/ JRO

    Objet Proprit/Mthode

    DBEngine DefaultType1 N/A N/A N/A DBEngine DefaultPassword1 N/A N/A N/A DBEngine DefaultUser1 N/A N/A N/A DBEngine IniPath ADO Connection Jet OLEDB:Registry

    Path2 DBEngine LoginTimeout ADO Connection ConnectionTimeout DBEngine SystemDB ADO Connection Jet OLEDB:System

    Database2 DBEngine Version ADO Connection Version DBEngine BeginTrans ADO Connection BeginTrans DBEngine CommitTrans ADO Connection CommitTrans DBEngine Rollback ADO Connection RollbackTrans DBEngine CompactDatabase JRO JetEngine CompactDatabase DBEngine CreateDatabase ADOX Catalog Create DBEngine CreateWorkspace ADO Connection Open DBEngine Idle JRO JetEngine RefreshCache DBEngine OpenDatabase ADO Connection Open DBEngine RegisterDatabase1 N/A N/A N/A DBEngine RepairDatabase1 N/A N/A N/A DBEngine SetOption ADO Connection Properties3 Workspace IsolateODBCTrans ADO Connection Isolation Levels2 Workspace LoginTimeout ADO Connection ConnectionTimeout Workspace Name1 N/A N/A N/A Workspace Type1 N/A N/A N/A Workspace UserName ADO Connection User Id2 Workspace BeginTrans ADO Connection BeginTrans Workspace CommitTrans ADO Connection CommitTrans Workspace Rollback ADO Connection RollbackTrans Workspace Close ADO Connection Close Workspace CreateDatabase ADOX Catalog Create Workspace CreateGroup ADOX Groups Append Workspace CreateUser ADOX Users Append Workspace OpenDatabase ADO Connection Open Database CollatingOrder ADO Connection Locale Identifier2 Database Connect ADO Connection ConnectionString

  • Annexe A DAO vers ADO Aide mmoire

    56

    Database Name ADO Connection Data Source2 Database QueryTimeout ADO Connection CommandTimeout Database Replicable JRO Replica MakeReplicable Database ReplicaId JRO Replica ReplicaId Database ReplicationConflictFu

    nction JRO Replica ConflictFunction

    Database RecordsAffected ADO Connection Execute(RecordsAffected)

    Database Transactions ADO Connection Transaction DDL2 Database Updatable ADO Connection Mode Database V1xNullBehavior N/A N/A N/A Database Version ADO Connection DBMS Version2 Database Close ADO Connection Close Database CreateProperty N/A N/A Not supported in this

    release Database CreateQueryDef ADOX Command Dim New4 Database CreateRelation ADOX Key Dim New4 Database CreateTableDef ADOX Table Dim New4 Database Execute ADO Connection Execute Database MakeReplica JRO Replica CreateReplica Database NewPassword ADOX Catalog Modify Database OpenRecordset ADO Recordset Open Database PopulatePartial JRO Replica PopulatePartial Database Synchronize JRO Replica Synchronize Recordset AbsolutePosition ADO Recordset AbsolutePosition Recordset BOF ADO Recordset BOF Recordset EOF ADO Recordset EOF Recordset Bookmark ADO Recordset Bookmark Recordset Bookmarkable ADO Recordset Supports Recordset CacheSize ADO Recordset Jet OLEDB:Fat Cursor

    Cache Size2 Recordset CacheStart1 N/A N/A N/A Recordset DateCreated ADOX Table DateCreated Recordset LastUpdated ADOX Table DateModified Recordset EditMode ADO Recordset EditMode Recordset Filter ADO Recordset Filter Recordset Index ADO Recordset Index Recordset LastModified1 N/A N/A N/A Recordset LockEdits ADO Recordset LockType Recordset Name1 N/A N/A N/A Recordset NoMatch ADO Recordset Find Recordset PercentPosition N/A N/A Not supported in this

    release. Recordset RecordCount ADO Recordset RecordCount Recordset RecordStatus ADO Recordset EditMode Recordset Restartable1 N/A N/A N/A Recordset Sort ADO Recordset Sort Recordset Transactions1 N/A N/A N/A Recordset Type ADO Recordset CursorType Recordset Updatable ADO Recordset Recordset.Supports(adU

    pdate) Recordset ValidationRule ADOX Table ValidationRule Recordset ValidationText ADOX Table ValidationText

  • Annexe A DAO vers ADO Aide mmoire

    57

    Recordset AddNew ADO Recordset AddNew Recordset CancelUpdate ADO Recordset CancelUpdate Recordset Clone ADO Recordset Clone Recordset Close ADO Recordset Close Recordset CopyQueryDef ADO Recordset Source Recordset Delete ADO Recordset Delete Recordset Edit1 N/A N/A N/A Recordset FillCache1 N/A N/A N/A Recordset FindFirst ADO Recordset Find Recordset FindLast ADO Recordset Find Recordset FindNext ADO Recordset Find Recordset FindPrevious ADO Recordset Find Recordset GetRows ADO Recordset GetRows Recordset Move ADO Recordset Move Recordset MoveFirst ADO Recordset MoveFirst Recordset MoveLast ADO Recordset MoveLast Recordset MoveNext ADO Recordset MoveNext Recordset MovePrevious ADO Recordset MovePrevious Recordset OpenRecordset ADO Recordset Open Recordset Requery ADO Recordset Requery Recordset Seek ADO Recordset Seek Recordset Update ADO Recordset Update QueryDef CacheSize ADO Command Jet OLEDB:Fat Cursor

    Cache Size2 QueryDef Connect ADO Command Jet OLEDB:Link

    datasource2 QueryDef DateCreated ADOX Procedure DateCreated QueryDef LastUpdated ADOX Procedure DateModified QueryDef KeepLocal JRO Replica Get/SetObjectReplicabili

    ty QueryDef LogMessages N/A N/A Not supported in this

    release. QueryDef MaxRecords ADO Command MaxRecords QueryDef Name ADOX Procedure Name QueryDef ODBCTimeout ADO Command Jet OLEDB:ODBC

    Command Timeout2 QueryDef RecordsAffected ADO Command Execute(RecordsAffecte

    d) QueryDef Replicable JRO Replica Get/SetObjectReplicabili

    ty QueryDef ReturnsRecords1 N/A N/A N/A QueryDef SQL ADO Command CommandText QueryDef Type N/A N/A Not supported in this

    release. QueryDef Updatable N/A N/A N/A QueryDef Close ADO/X Command

    /Procedure

    Set to Nothing

    QueryDef CreateProperty N/A N/A Not supported in this release

    QueryDef Execute ADO Command Command.Execute QueryDef OpenRecordset ADO Recordset Open TableDef Attributes ADOX Table Properties5

  • Annexe A DAO vers ADO Aide mmoire

    5