Article Dao

download Article Dao

of 96

description

acceq aux base de donnees

Transcript of Article Dao

  • Dfinition et manipulation de donnes avec DAO

    Par Christophe WARIN

    Date de publication : 9 mai 2005

    Dernire mise jour : 30 juillet 2009

    Ce support constitue un cours d'introduction l'accs aux donnes dans une baseAccess via DAO (Data Access Object). Il ne ncessite pas de connaissance pointue enprogrammation hormis les bases du langage VBA.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 2 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    1 - Introduction & Tlchargement..............................................................................................................................71.1 - Tlchargement............................................................................................................................................. 71.2 - Introduction.................................................................................................................................................... 7

    2 - La hirarchie du modle DAO...............................................................................................................................82.1 - Le modle objet.............................................................................................................................................82.2 - Quelques rappels sur les collections.............................................................................................................9

    2.2.1 - Accder un lment d'une collection.................................................................................................92.2.2 - Compter les lments........................................................................................................................... 92.2.3 - Parcourir les lments d'une collection.............................................................................................. 102.2.4 - Ajouter un lment..............................................................................................................................102.2.5 - Supprimer un lment.........................................................................................................................11

    3 - Accder une base de donnes........................................................................................................................ 123.1 - L'objet DBEngine......................................................................................................................................... 12

    3.1.1 - Gnralits.......................................................................................................................................... 123.1.2 - Liste des proprits.............................................................................................................................12

    3.1.2.1 - DefaultPassword......................................................................................................................... 123.1.2.2 - DelfaultType................................................................................................................................ 123.1.2.3 - DefaultUser................................................................................................................................. 123.1.2.4 - Errors...........................................................................................................................................123.1.2.5 - Inipath..........................................................................................................................................133.1.2.7 - Properties.................................................................................................................................... 133.1.2.8 - SystemDB................................................................................................................................... 133.1.2.9 - Version........................................................................................................................................ 133.1.2.10 - Workspaces...............................................................................................................................13

    3.1.3 - Liste des mthodes.............................................................................................................................143.1.3.1 - BeginTrans.................................................................................................................................. 143.1.3.2 - CommitTrans...............................................................................................................................143.1.3.3 - CompactDatabase.......................................................................................................................143.1.3.4 - CreateDatabase.......................................................................................................................... 143.1.3.5 - CreateWorkspace........................................................................................................................153.1.3.6 - Idle...............................................................................................................................................153.1.3.7 - OpenDatabase............................................................................................................................ 153.1.3.8 - RepairDatabase.......................................................................................................................... 163.1.3.9 - Rollback.......................................................................................................................................16

    3.2 - L'objet Workspace....................................................................................................................................... 163.2.1 - Gnralits.......................................................................................................................................... 163.2.2 - Liste des proprits.............................................................................................................................17

    3.2.2.1 - Databases................................................................................................................................... 173.2.2.2 - IsolateODBCTrans...................................................................................................................... 173.2.2.3 - Name...........................................................................................................................................173.2.2.4 - Properties.................................................................................................................................... 183.2.2.5 - Type.............................................................................................................................................18

    3.2.3 - Liste des mthodes.............................................................................................................................183.2.3.1 - BeginTrans.................................................................................................................................. 183.2.3.2 - Close........................................................................................................................................... 183.2.3.3 - CommitTrans...............................................................................................................................183.2.3.4 - CreateDatabase.......................................................................................................................... 193.2.3.5 - OpenDatabase............................................................................................................................ 193.2.3.6 - Rollback.......................................................................................................................................20

    3.2.4 - Accder un groupe de travail spcifique......................................................................................... 203.3 - L'objet Database..........................................................................................................................................22

    3.3.1 - Gnralits.......................................................................................................................................... 223.3.1.1 - La mthode CurrentDb............................................................................................................... 233.3.1.2 - La mthode CodeDb...................................................................................................................24

    3.3.2 - Liste des proprits.............................................................................................................................243.3.2.1 - CollatingOrder............................................................................................................................. 243.3.2.2 - Connect....................................................................................................................................... 253.3.2.3 - Containers................................................................................................................................... 25

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 3 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    3.3.2.4 - Name...........................................................................................................................................253.3.2.5 - Properties.................................................................................................................................... 253.3.2.6 - QueryDefs................................................................................................................................... 253.3.2.7 - RecordsAffected..........................................................................................................................253.3.2.8 - Recordsets.................................................................................................................................. 263.3.2.9 - Relations..................................................................................................................................... 263.3.2.10 - TableDefs.................................................................................................................................. 263.3.2.11 - Transactions.............................................................................................................................. 263.3.2.12 - Updatable.................................................................................................................................. 273.3.2.13 - Version...................................................................................................................................... 27

    3.3.3 - Liste des mthodes.............................................................................................................................273.3.3.1 - Close........................................................................................................................................... 273.3.3.2 - CreateProperty............................................................................................................................ 273.3.3.3 - CreateQueryDef.......................................................................................................................... 273.3.3.4 - CreateRelation............................................................................................................................ 283.3.3.5 - CreateTableDef........................................................................................................................... 283.3.3.6 - Execute....................................................................................................................................... 283.3.3.7 - NewPassword............................................................................................................................. 283.3.3.8 - OpenRecordset........................................................................................................................... 29

    4 - DAO et la structure d'une base de donnes.......................................................................................................304.1 - Gnralits...................................................................................................................................................304.2 - Les proprits spcifiques...........................................................................................................................30

    4.2.1 - Dfinitions............................................................................................................................................ 304.2.2 - Liste des proprits d'un objet Property............................................................................................. 31

    4.2.2.1 - Inherited...................................................................................................................................... 314.2.2.2 - Name...........................................................................................................................................324.2.2.3 - Type.............................................................................................................................................324.2.2.4 - Value........................................................................................................................................... 32

    4.2.3 - Accder une proprit..................................................................................................................... 324.2.4 - Modifier la valeur d'une proprit....................................................................................................... 344.2.5 - Cration d'une nouvelle proprit....................................................................................................... 35

    4.3 - L'objet TableDef........................................................................................................................................... 364.3.1 - Dfinitions............................................................................................................................................ 364.3.2 - Liste des proprits.............................................................................................................................36

    4.3.2.1 - Attributes..................................................................................................................................... 364.3.2.2 - Connect....................................................................................................................................... 374.3.2.3 - DataCreated................................................................................................................................ 374.3.2.4 - Fields...........................................................................................................................................374.3.2.5 - Indexes........................................................................................................................................374.3.2.6 - LastUpdated................................................................................................................................ 374.3.2.7 - Name...........................................................................................................................................374.3.2.8 - Properties.................................................................................................................................... 384.3.2.9 - RecordCount............................................................................................................................... 384.3.2.10 - SourceTableName.....................................................................................................................384.3.2.11 - Updatable.................................................................................................................................. 384.3.2.12 - ValidationRule........................................................................................................................... 384.3.2.13 - ValidationText............................................................................................................................ 38

    4.3.3 - Liste des mthodes.............................................................................................................................394.3.3.1 - CreateField..................................................................................................................................394.3.3.2 - CreateIndex.................................................................................................................................394.3.3.3 - CreateProperty............................................................................................................................ 394.3.3.4 - OpenRecordset........................................................................................................................... 394.3.3.5 - RefreshLink................................................................................................................................. 39

    4.3.4 - Oprations sur les tables d'une base de donnes............................................................................. 404.3.4.1 - Lister les tables d'une base de donnes....................................................................................404.3.4.2 - Renommer une table.................................................................................................................. 414.3.4.3 - Supprimer une table................................................................................................................... 414.3.4.4 - Crer une nouvelle table............................................................................................................ 42

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 4 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    4.4 - L'objet Field..................................................................................................................................................434.4.1 - Dfinition..............................................................................................................................................434.4.2 - Liste des proprits.............................................................................................................................43

    4.4.2.1 - AllowZeroLength......................................................................................................................... 444.4.2.2 - Attributes..................................................................................................................................... 444.4.2.3 - CollatingOrder............................................................................................................................. 444.4.2.4 - DataUpdatable............................................................................................................................ 454.4.2.5 - DefaultValue................................................................................................................................ 454.4.2.6 - FieldSize......................................................................................................................................454.4.2.7 - ForeignName...............................................................................................................................464.4.2.8 - Name...........................................................................................................................................464.4.2.9 - OrdinalPosition............................................................................................................................ 464.4.2.10 - Properties.................................................................................................................................. 464.4.2.11 - Required.................................................................................................................................... 464.4.2.12 - Size........................................................................................................................................... 464.4.2.13 - SourceField............................................................................................................................... 474.4.2.14 - SourceTable.............................................................................................................................. 484.4.2.15 - Type...........................................................................................................................................484.4.2.16 - ValidationRule........................................................................................................................... 494.4.2.17 - ValidationText............................................................................................................................ 494.4.2.18 - Value......................................................................................................................................... 494.4.2.19 - VisibleValue...............................................................................................................................49

    4.4.3 - Liste des mthodes.............................................................................................................................494.4.3.1 - AppendChunk..............................................................................................................................494.4.3.2 - CreateProperty............................................................................................................................ 494.4.3.3 - GetChunk.................................................................................................................................... 50

    4.4.4 - Oprations sur les champs d'un objet TableDef................................................................................. 504.4.4.1 - Renommer un champ................................................................................................................. 504.4.4.2 - Supprimer un champ.................................................................................................................. 514.4.4.3 - Crer un champ..........................................................................................................................524.4.4.4 - Dupliquer un champ....................................................................................................................53

    4.5 - L'objet Index.................................................................................................................................................544.5.1 - Dfinitions............................................................................................................................................ 544.5.2 - Liste des proprits.............................................................................................................................54

    4.5.2.1 - DistinctCount............................................................................................................................... 544.5.2.2 - Fields...........................................................................................................................................554.5.2.3 - Foreign........................................................................................................................................ 554.5.2.4 - IgnoreNulls.................................................................................................................................. 554.5.2.5 - Name...........................................................................................................................................554.5.2.6 - Properties.................................................................................................................................... 554.5.2.7 - Required......................................................................................................................................554.5.2.8 - Unique......................................................................................................................................... 56

    4.5.3 - Liste des mthodes.............................................................................................................................564.5.3.1 - CreateField..................................................................................................................................564.5.3.2 - CreateProperty............................................................................................................................ 56

    4.5.4 - Oprations sur les Index.....................................................................................................................564.5.4.1 - Crer un index............................................................................................................................ 564.5.4.2 - Supprimer une cl primaire........................................................................................................ 57

    4.6 - L'objet Relation............................................................................................................................................ 574.6.1 - Dfinitions............................................................................................................................................ 574.6.2 - Liste des proprits.............................................................................................................................57

    4.6.2.1 - Attributes..................................................................................................................................... 574.6.2.2 - Fields...........................................................................................................................................584.6.2.3 - ForeignTable................................................................................................................................584.6.2.4 - Name...........................................................................................................................................584.6.2.6 - Properties.................................................................................................................................... 584.6.2.7 - Table............................................................................................................................................59

    4.6.3 - Liste des mthodes.............................................................................................................................59

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 5 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    4.6.4 - Exemple de dfinition des proprits..................................................................................................594.6.5 - Oprations sur les relations................................................................................................................ 60

    4.6.5.1 - Crer une relation.......................................................................................................................604.6.5.2 - Compter les relations utilisant un champ donn........................................................................ 614.6.5.3 - Supprimer les relations autour d'une table.................................................................................62

    4.7 - L'objet QueryDef..........................................................................................................................................624.7.1 - Dfinitions............................................................................................................................................ 634.7.2 - Liste des proprits.............................................................................................................................64

    4.7.2.1 - Connect....................................................................................................................................... 644.7.2.2 - DateCreated................................................................................................................................ 644.7.2.3 - Fields...........................................................................................................................................644.7.2.4 - LastUpdated................................................................................................................................ 644.7.2.5 - MaxRecords................................................................................................................................ 644.7.2.6 - Name...........................................................................................................................................654.7.2.7 - Parameters..................................................................................................................................654.7.2.8 - Properties.................................................................................................................................... 654.7.2.9 - RecordsAffected..........................................................................................................................654.7.2.10 - ReturnsRecords........................................................................................................................ 654.7.2.11 - SQL........................................................................................................................................... 664.7.2.12 - Type...........................................................................................................................................664.7.2.13 - Updatable.................................................................................................................................. 66

    4.7.3 - Liste des mthodes.............................................................................................................................664.7.3.1 - CreateProperty............................................................................................................................ 664.7.3.2 - Execute....................................................................................................................................... 674.7.3.3 - OpenRecordset........................................................................................................................... 67

    4.7.4 - Oprations sur les requtes................................................................................................................674.7.4.1 - Cration d'une requte............................................................................................................... 674.7.4.2 - Modifier le code d'une requte................................................................................................... 684.7.4.3 - Lister les requtes...................................................................................................................... 68

    5 - Accs aux donnes............................................................................................................................................. 705.1 - Dfinition...................................................................................................................................................... 70

    5.1.1 - Les diffrents types de Recordset...................................................................................................... 705.2 - Ouvrir et fermer un recordset......................................................................................................................71

    5.2.1 - Depuis un objet Database.................................................................................................................. 715.2.2 - Depuis un objet QueryDef.................................................................................................................. 735.2.3 - Depuis un formulaire Access.............................................................................................................. 735.2-4 - Fermer un Recordset..........................................................................................................................74

    5.3 - Positions et dplacements...........................................................................................................................745.3.1 - Se dplacer dans un Recordset......................................................................................................... 745.3.2 - Trouver un enregistrement..................................................................................................................755.3.3 - Mmoriser une position.......................................................................................................................76

    5.4 - Manipulation des donnes...........................................................................................................................765.4.1 - Lire un enregistrement........................................................................................................................ 765.4.2 - Modifier un enregistrement................................................................................................................. 775.4.3 - Ajouter un enregistrement...................................................................................................................785.4.4 - Supprimer un enregistrement..............................................................................................................795.4.5 - Compter les enregistrements.............................................................................................................. 795.4.6 - Filtrer les donnes...............................................................................................................................81

    5.5 - Lecture par bloc...........................................................................................................................................815.5.1 - Gnralits.......................................................................................................................................... 825.5.2 - Exemple...............................................................................................................................................82

    5.6 - Liste des proprits..................................................................................................................................... 855.6.1 - AbsolutePosition.................................................................................................................................. 855.6.2 - BOF..................................................................................................................................................... 855.6.3 - Bookmark.............................................................................................................................................855.6.4 - Bookmarkable......................................................................................................................................865.6.5 - CacheSize........................................................................................................................................... 865.6.6 - CacheStart...........................................................................................................................................86

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 6 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    5.6.7 - Connection...........................................................................................................................................865.6.8 - DataCreated........................................................................................................................................ 875.6.9 - EditMode..............................................................................................................................................875.6.10 - EOF................................................................................................................................................... 875.6.11 - Fields................................................................................................................................................. 885.6.12 - Filter...................................................................................................................................................885.6.13 - Index.................................................................................................................................................. 885.6.14 - LastModified...................................................................................................................................... 885.6.15 - LastUpdated...................................................................................................................................... 885.6.16 - LockEdits........................................................................................................................................... 895.6.17 - Name................................................................................................................................................. 895.6.18 - NoMatch............................................................................................................................................ 895.6.19 - PercentPosition..................................................................................................................................895.6.20 - Properties.......................................................................................................................................... 895.6.21 - RecordCount......................................................................................................................................905.6.22 - Restartable........................................................................................................................................ 905.6.23 - Sort.................................................................................................................................................... 905.6.24 - StillExecuting..................................................................................................................................... 915.6.25 - Transactions...................................................................................................................................... 915.6.26 - Type................................................................................................................................................... 925.6.27 - Updatable.......................................................................................................................................... 925.6.28 - UpdateOptions...................................................................................................................................925.6.29 - ValidationRule....................................................................................................................................925.6.30 - ValidationText.....................................................................................................................................92

    5.7 - Liste des mthodes..................................................................................................................................... 935.7.1 - AddNew............................................................................................................................................... 935.7.2 - CancelUpdate...................................................................................................................................... 935.7.3 - Clone................................................................................................................................................... 935.7.4 - Close....................................................................................................................................................945.7.5 - CreateQueryDef...................................................................................................................................945.7.6 - Delete.................................................................................................................................................. 945.7.7 - Edit.......................................................................................................................................................945.7.8 - FindFirst, FindLast, FindNext, FindPrevious....................................................................................... 945.7.9 - GetRows.............................................................................................................................................. 955.7.10 - Move, MoveFirst, MoveLast, MoveNext, MovePrevious................................................................... 955.7.11 - OpenRecordset..................................................................................................................................955.7.12 - Requery............................................................................................................................................. 955.7.13 - Update............................................................................................................................................... 95

    6 - Conclusion............................................................................................................................................................96

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 7 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    1 - Introduction & Tlchargement

    1.1 - Tlchargement

    Franais Tlcharger la version PDF de ce tutoriel 96pages - 547 KoFTP (Recommand) : TlchargerHTTP (Secours) : Tlcharger

    Arabe Tlcharger la traduction de ce tutoriel auformat PDF 116 pages - 940 Ko par MEDALAOUI SOSSEFTP (Recommand) : TlchargerHTTP (Secours) : Tlcharger

    1.2 - Introduction

    DAO (Data Access Objects) est une bibliothque regroupant un ensemble d'objets permettant d'accder une basede donnes. L'utilisation de ces objets permet la fois de travailler la structure de la base mais aussi de manipulerses donnes.

    Ce cours a pour objectif de vous enseigner les innombrables possibilits offertes par cette bibliothque, que ce soitaussi bien au niveau de la structure que des donnes. Via plusieurs exemples, vous allez ainsi dcouvrir commentil est possible de crer une table, modifier ses champs, dfinir des relations, construire des requtes, manipuler lesdonnes d'un formulaire, ajouter de nouveaux enregistrements, ...

    Vous pourrez aussi retrouver chacune des proprits et des mthodes propres chaque objet dans un listing en finde section. Bien entendu, cette liste ne prtend pas se substituer l'aide Access qui, je vous le rappelle, reste laplus grande mine d'informations.

    Certaines parties ne sont pas dtailles dans ce document car elles ne rpondent pas uneutilisation classique de DAO avec le moteur Jet. Afin d'alleger ce cours, vous ne trouverez doncpas d'informations concernant :

    L'acccs aux donnes dans un environnement ODBC Direct La replication Les objets DAO ne concernant pas l'accs aux donnes (Scurit, Utilisateur, Conteneur ....)

    Avant de commencer :

    L'ensemble des mthodes et des objets permettant l'accs aux donnes via DAO sont regroups au sein d'une mmelibrairie. Afin d'utiliser ces fonctionnalits, il vous faut donc ajouter la rfrence suivante votre projet :

    Microsoft DA0 3.5 Object Library pour Access 97.Microsoft DA0 3.6 Object Library pour les versions utltrieures.Microsoft Office 12.0 (14.0) Access Database Engine Object pour travailler avec des bases de donnes Access2007 ou Access 2010.

    Comment ajouter une rfrence ?Depuis le menu Outils de l'diteur Visual Basic, slectionnez l'option Rfrences. Cochezensuite la case correspondante la rfrence ajouter.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 8 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    2 - La hirarchie du modle DAO

    2.1 - Le modle objet

    Voici une reprsentation du modle objet DAO :

    Comme vous pouvez le remarquer, le modle objet DAO possde une structure hirarchise dont la racine est unobjet DBEngine. Les relations de descendance sont de type un plusieurs. Cela signifie que chaque objet parentpossde une collection de chaque type d'objet enfant dont le nom est normalis ainsi :

    Nom de la collection = Type de l'objet enfant + "s"

    Par exemple, l'objet DBEngine possde une collection d'objet Workspace. Cette collection est nommeWorkspaces.

    Prcisons aussi que ce schma a t rduit uniquement la partie dfinition de donnes (en bleu) et la partiemanipulation de donnes (en vert). De plus, chaque branche a t rduite pour amliorer la lisibilit. Comme tout autreobjet, un objet DAO possde un ensemble de proprits (property). Celles ci sont regroupes dans une collectionnomme properties propre chaque objet. Voici un exemple du schma rel appliquer aux objets TableDef.

    L'utilisation de DAO implique de nombreuses dclarations de variables. Ceci demandebeaucoup de rigueur. Aussi je vous invite consulter le tutoriel sur les conventions de nommageVisual Basic crit par Jean-Philippe AMBROSINO : Les conventions typographiques en VBA(illustres sur Access)

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 9 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    2.2 - Quelques rappels sur les collections

    Etant donn que DAO est un modle objet et qu'il utilise de nombreuses collections, je vous propose quelques rappelssur le traitement des collections d'objets sous Visual Basic.

    2.2.1 - Accder un lment d'une collection

    Il existe deux techniques afin d'accder un objet d'une collection :

    Accs via l'index : Il s'agit d'utiliser la position de l'lment dans la collection en sachant que le premier possdel'index zro.

    Syntaxe :

    MaCollection.Item(2)

    Accs via la cl : Il s'agit d'utiliser le nom de l'lement lorsque celui-ci est connu.

    Syntaxe :

    MaCollection.Item ("MonItem")

    La proprit Item est le membre par dfaut des objets de type Collection. Vous pouvez doncutiliser indiffremment :

    Syntaxe :

    MaCollection.Item ("MonItem")

    Ou :

    Syntaxe :

    MaCollection.("MonItem")

    2.2.2 - Compter les lments

    Sous Visual Basic, les collections proposent la proprit Count qui renvoie le nombre d'objets dans la collection.

    Syntaxe :

    MaCollection.Count

    Etant donn que le premier lment a pour index 0, on en conclut aisment que le dernierlment de la collection possde l'index : Count - 1

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 10 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    2.2.3 - Parcourir les lments d'une collection

    Une nouvelle fois, il est possible d'utiliser deux mthodes. La premire consiste en une boucle sur l'index de lacollection jusqu'au dernier lment.

    Voici un exemple :

    Dim i As Integer, nbMax As Integer'Rcupre le nombre de WorkspacenbMax = DBEngine.Workspaces.Count - 1'Boucle sur l'indexFor i = 0 To nbMax 'Affiche le nom de l'objet MsgBox DBEngine.Workspaces(i).NameNext i

    La seconde mthode utilise une boucle For Each In Next pour parcourir un un les objets de la collection.

    Ainsi :

    Dim oWks As DAO.WorkspaceFor Each oWks In DBEngine.Workspaces 'Affiche le nom de l'objet MsgBox oWks.NameNext oWks

    Peut tre traduit par :

    Pour chaque objet Workspace de la collection Workspaces du DBEngine Afficher le nom de l'objetFin Pour

    Cette dernire mthode possde un avantage dans le cas de collections htrognes. Imaginons une collectiond'objets O1 et O2. Pour parcourir uniquement les lments de type O1, nous aurions par exemple :

    Dim oTmpObjet as TypeO1For Each oTmpObjet In MaCollection 'Traitement effectuerNext oTmpObjet

    2.2.4 - Ajouter un lment

    Les collections DAO sont munies de la mthode Append qui permet d'ajouter un lment. Sa syntaxe est la suivante :

    MaCollection.Append MonObjet

    Notons tout de mme que pour tre ajout, l'objet doit tre instanci auparavant, sans quoi il sera impossible del'ajouter. De mme, il est impossible d'ajouter un objet si un autre objet prsent dans la collection possde le mmenom. Vous trouverez de nombreux exemples de la mthode Append dans la suite de ce document.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 11 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    2.2.5 - Supprimer un lment

    La mthode Delete applique aux collections DAO permet de supprimer l'lment dont le nom est pass enparamtre. La syntaxe de cette mthode est la suivante :

    MaCollection.Delete "MonItem"

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 12 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    3 - Accder une base de donnes

    Ce chapitre est entirement consacr l'ouverture d'une base de donnes. Il vous fournira une liste de l'ensembledes proprits et des mthodes de chaque objet utilis ainsi que plusieurs exemples d'utilisation sous Visual Basic.

    3.1 - L'objet DBEngine

    3.1.1 - Gnralits

    L'objet DBEngine correspond au moteur de base de donnes. Il s'agit d'un composant logiciel qui interprte lesrequtes que vous lui transmettez et interroge le fichier de base de donnes. Dans la plupart des cas, vous n'aurezjamais l'instancier ni mme le contrler puisque l'objet Access.Application possde une proprit DBEnginerenvoyant le moteur de base de donnes actuellement utilis. L'objet DBEngine propose dans ses proprits la listedes espaces de travail (collection Workspaces) ainsi que d'autres proprits relatives la gestion des utilisateurs.Ces proprits n'ont que peu d'intrt dans le cas d'une utilisation normale sans gestion de scurit. Toutefois, lemoteur de base de donnes n'est pas oublier puisque c'est lui qui encapsule les mthodes de transactions ainsique les mthodes de rparation et de compactage de la base de donnes.

    3.1.2 - Liste des proprits

    Vous trouverez ci-dessous l'ensemble des proprits de l'objet DBEngine.

    3.1.2.1 - DefaultPassword

    Type : String

    Il s'agit du mot de passe par dfaut qui sera utilis lors de la cration d'un nouvel objet Workspace.

    3.1.2.2 - DelfaultType

    Type : Long

    Cette proprit correspond au type par dfaut des futurs objets Workspace. Les valeurs possibles sont dbUseJetdans le cas d'une utilisation Jet et dbUseODBC dans le cas d'une liaison ODBC direct. Notons que dans ce derniercas, l'objet Database est remplac par un objet de type Connection.

    3.1.2.3 - DefaultUser

    Type : String

    Il s'agit du nom d'utilisateur qui sera utilis par dfaut lors de la cration d'un nouvel objet Workspace. Cette propritest gnralement utilise en mme temps que DefaultPassword.

    3.1.2.4 - Errors

    Type : Collection

    Cette collection regroupe l'ensemble des erreurs leves par le moteur de base de donnes. Une erreur DAO estidentifie par un numro d'erreur et possde une description correspondant au message d'erreur. A chaque foisqu'une opration DAO choue,un ou plusieurs objets Error sont crs et ajouts la collections Errors. Une fois

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 13 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    que tous ces objets sont crs, une erreur d'excution est leve par VBA. Cette erreur correspond l'objet Errorpossdant le numro d'erreur le plus lev. Sous Access, lors d'une erreur DAO, un seul objet Error est cr pourrprsenter l'erreur. L'erreur leve par VBA est donc la mme que celle du moteur de base de donnes. Toutefois, sivous tentez par exemple de vous connecter une base de donnes Oracle via votre application, il se peut qu'Oraclelve plusieurs objets Error reprnsentant la mme erreur. Vous trouverez donc dans la collection DBEngine.Errors :

    L'ensemble des erreurs Oracle Une erreur Odbc

    Mais une seule erreur sera leve par VBA. Le parcours de la collection Errors peut donc vous permettre d'affinervos routines de gestion d'erreur.

    3.1.2.5 - Inipath

    Type : String

    La proprit Inipath correspond au chemin du fichier d'initialisation du moteur de base de donnes. Il s'agitgnralement d'une entre dans la base des registres :HKLM\Software\microsoft\Office\10.0\Access\Jet\4.0C'est ici que figure de nombreuses options internes au moteur Jet, comme par exemple le chemin du fichier degroupe de travail utilis.

    Bien qu'importante au moteur de base de donnes, cette proprit reprsente trs peu d'intrtpour le dveloppeur hormis de localiser le chemin o est stock le fichier de groupe de travail.

    3.1.2.7 - Properties

    Type : Collection

    Collection regroupant l'ensemble des proprits (Property) de l'objet DBEngine.

    Pour plus d'informations sur la collection Properties, je vous renvoie vers la section 4.2 Lesproprits spcifiques.

    3.1.2.8 - SystemDB

    Type : String

    Il s'agit du chemin d'accs au fichier mdw (fichier de groupe de travail) utiliser. Le fichier utilis par dfaut est celuicontenu dans l'entre du fichier ini ou de la base de registre spcifie dans la proprit IniPath.

    3.1.2.9 - Version

    Lecture seule.

    Type : String

    La proprit Version correspond la version du moteur Jet. Par exemple : 3.6.

    3.1.2.10 - Workspaces

    Type : Collection

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 14 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    Collection regroupant l'ensemble des espaces de travail (Worspaces(0) tant l'espace de travail par dfaut).

    Pour de plus amples informations, veuillez consulter le chapitre suivant : L'objet Workspace.

    3.1.3 - Liste des mthodes

    Je vous propose la liste des mthodes applicables aux objets de la classe DBEngine.

    3.1.3.1 - BeginTrans

    La mthode BeginTrans commence une transaction.

    Exemple :

    DBEngine.BeginTrans

    3.1.3.2 - CommitTrans

    La mthode CommitTrans stoppe la transaction tout en enregistrant les donnes.

    Exemple :

    DBEngine.CommitTrans

    3.1.3.3 - CompactDatabase

    La mthode CompactDatabase copie et compacte une base de donnes. Notons que la base de donnes doit treferme pour raliser cette opration.

    Syntaxe :

    DBEngine.CompactDatabase olddb, newdb, [locale], [options], [password]

    olddb correspond au fichier source et newdb au fichier de destination (diffrent de olddb). Les autres optionsconcernent essentiellement la langue, la version et le codage utilis. Il s'agit de constantes disponibles dans l'aideAccess.

    Exemple :

    DBEngine.CompactDatabase "c:\bd1.mdb", "c:\bd2.mdb"

    3.1.3.4 - CreateDatabase

    La mthode CreateDatabase permet de crer une nouvelle base de donnes. Elle renvoie un objet de typeDAO.Database.

    Syntaxe :

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 15 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    Set database = DBEngine.CreateDatabase (name, locale, [options])

    L'argument name correspond au nom complet de la base de donnes.locale est une constante reprsentant l'ordre de tri appliquer (dbLangGeneral pour la France). Le dernier argumentest facultatif et permet de spcifier le codage et la version de la base de donnes.

    Exemple :

    Set db = DBEngine.CreateDatabase("c:\mabase.mdb", dbLangGeneral)

    3.1.3.5 - CreateWorkspace

    Cette mthode permet de crer un nouvel objet WorkSpace (Espace de travail) et retourne l'objet cr.

    Syntaxe :

    Set workspace = DBEngine.CreateWorkspace(name, user, password, [type])

    Name correspond au nom de l'espace de travail. Il permettra de l'identifier de manire unique dans la collectionWorkspaces.User correspond au nom de l'utilisateur dans cet espace et password son mot de passe (14 caractres aumaximum). Ce couple d'authentification doit obligatoirement figurer dans le fichier mdw spcifi dans la propritSystemDB, sans quoi une erreur sera leve par le moteur de base de donnes.Le dernier argument est facultatif et correspond au type d'espace crer. S'il n'est pas mentionn, ce sera le typefigurant dans la proprit DefaultType qui sera utilis.

    Exemple :

    Set Wks = DBEngine.CreateWorkspace("MonEspace", "Toto", "mdp#@#!mJ")

    3.1.3.6 - Idle

    La mthode Idle donne la possibilit au moteur JET de traiter ses tches en attente. Notons que cette mthodepossde un argument facultatif. Si ce dernier est gal dbRefreshCache, la mmoire est ractualise avecuniquement les donnes les plus rcentes en provenance du fichier de base de donnes.

    Exemple :

    DBEngine.Idle

    3.1.3.7 - OpenDatabase

    Comme son nom l'indique, cette mthode ouvre une base de donnes. Elle renvoie un objet de type DAO.Database.

    Syntaxe :

    Set database = workspace.OpenDatabase (dbname, options, read-only, connect)

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 16 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    Dbname correspond au chemin d'accs de la base de donnes ouvrir. Cet argument peut aussi tre le nom d'unesource ODBC. Si cette chane est nulle, et que la variable connect est gale "ODBC;", une boite de dialogue deslection de source de donnes est affiche.

    L'argument option permet de spcifier si la base de donnes doit tre ouverte en mode exclusif (True) ou pas (False).De plus l'argument read-only ouvre la base de donnes en lecture seule lorsqu'il est gal True.

    Enfin, l'argument connect est utilis la fois pour spcifier le type de base de donnes et le mot de passe systme utiliser pour ouvrir le fichier.

    L'objet Database cr est ajout automatiquement l'espace de travail Workspaces(0).

    Exemple :

    Set db = DBEngine.OpenDatabase("c:\bd1.mdb", False, False, _ "MS Access;PWD=mdp#@#!e)

    3.1.3.8 - RepairDatabase

    La mthode RepairDatabase rpare la base de donnes. Notons qu'elle n'est plus utilise etest rserve pour assurer la compatibilit avec les anciennes versions.

    Il est recommand d'utiliser la mthode CompactDatabase en remplacement.

    3.1.3.9 - Rollback

    Cette mthode met fin une transaction dmarre avec BeginTrans.

    Exemple :

    DBEngine.RollBack

    3.2 - L'objet Workspace

    3.2.1 - Gnralits

    Deux types d'espaces de travail sont distinguer :

    Espace de travail Jet : Zone de travail utilisant le moteur de base de donnes Microsoft Jet pour accder unesource de donnes. Cette source de donnes peut prendre la forme d'un fichier de base de donnes Microsoft Jet(.mdb), ODBC, Paradox ou ISAM.

    Espace de travail ODBC Direct : Il s'agit d'une technique d'accs aux donnes une source ODBC sans passerpar le moteur de base de donnes Jet.

    Seul l'espace de travail Jet sera abord ici.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 17 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    Un objet Workspace reprsente un espace de travail au sein du moteur de base de donnes (DBEngine). Ils'agit en fait d'une session du DBEngine ddie un utilisateur donn. Hormis le cas o vous voulez grer vous-mme l'ouverture de la base de donnes dans un environnement scuris, l'utilisation de l'objet Workspace sousAccess a peu d'intrt. En effet, l'objet Workspaces(0) du DBEngine est l'espace de travail par dfaut. Il estinstanci automatiquement par Access lors d'un appel un objet DAO. Ainsi, en gnral, vous utiliserez unerfrence implicite celui ci, notamment lorsque que vous utiliserez les mthodes CodeDB ou CurrentDB de l'objetAccess.Application.

    Toutefois, tout comme l'objet DBEngine, le Workspace est capable d'excuter des mthodes de transaction, etpermet en plus de paramtrer la gestion des curseurs du moteur Jet (Recordset). Son utilisation peut devenir alorsprimordiale lorsque l'on souhaite paramtrer d'avantage l'accs aux donnes.

    Comme il a t prcis dans le chapitre prcdent, c'est partir de l'objet DBEngine qu'est cr chaque objetWorkspace l'aide de la mthode CreateWorkspace.

    La mthode CreateWorkspace demande un identifiant unique pour l'objet cr. De plus, lacration de tels objets est trs rare dans le temps. Aussi, il est possible d'utiliser une variablequi contiendra la date de cration de l'objet comme nom de l'objet Workspace instancier.

    Voici un exemple de cration d'un objet Workspace :

    Dim oWks As DAO.WorkspaceSet oWks = DBEngine.CreateWorkspace(Format(Now(), _ "yyyymmddhhnnss"), "Utilisateur1", "mpd##", dbUseJet)

    3.2.2 - Liste des proprits

    Vous trouverez ci-dessous la liste des proprits applicables un objet de la classe Workspace.

    3.2.2.1 - Databases

    Type : Collection

    Collection regroupant l'ensemble des objets Database ouverts dans l'objet Workspace correspondant.

    3.2.2.2 - IsolateODBCTrans

    Type : Boolean

    Si cette proprit est gale False (valeur par dfaut), il est possible d'effectuer plusieurs transactions simultanessur la mme connexion ODBC. Toutefois, les bases de donnes SQL Server n'acceptent pas ce mode defonctionnement, aussi dans le cas de connexion ODBC avec ce type de base de base de donnes, il vous faudrafixer cette proprit True.

    3.2.2.3 - Name

    Lecture seule.

    Type : String

    La proprit Name correspond au nom de l'objet Workspace concern. Ce nom est unique au sein de la collectionDBEngine.Workspaces.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 18 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    3.2.2.4 - Properties

    Comme tout autre objet DAO, l'objet Workspace possde cette collection qui regroupe l'ensemble des proprits(Property) de cet objet.

    De plus amples informations sur la collection Properties sont disponibles dans le chapitre Lesproprits spcifiques.

    3.2.2.5 - Type

    Lecture seule.

    Type : Long

    Il s'agit du type de l'espace de travail. Sa valeur est celle que vous avez spcifi la mthode CreateWorkspace duDBEngine. Si vous n'avez pas mentionn cette valeur lors de la cration de l'espace de travail, il s'agit de la valeur dela proprit DefaultType du moteur de base de donnes. L'objet Workspaces(0) tant instanci automatiquementpar Access lors d'un appel un objet DAO, la proprit Workspaces(0).Type est donc gale dbUseJet.L'autre valeur disponible est dbUseODBC.

    3.2.3 - Liste des mthodes

    Voici la liste des mthodes proposes par la classe Workspace. Bon nombre de ces mthodes sont communes la classe DBEngine.

    3.2.3.1 - BeginTrans

    La mthode BeginTrans commence une transaction.

    Exemple :

    DBEngine.Workspaces(0).BeginTrans

    3.2.3.2 - Close

    La mthode Close ferme l'espace de travail correspondant. Notez que si vous fermez un objet Workspace, sestransactions en attentes sont dtruite. De mme si cet objet Workspace possde des objets Database ou Connection,ces objets sont aussi ferms, ce qui a pour effet de fermer leurs objets recordsets associs.

    La fermeture d'un objet Workspace doit donc tre une action rflchie car elle peut entrainerla perte irrmdiable de donnes.

    Exemple :

    DBEngine.Workspaces(0).BeginTrans

    3.2.3.3 - CommitTrans

    Cette mthode stoppe une transaction dmare avec BeginTrans tout en enregistrant les donnes.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 19 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    Exemple :

    DBEngine.Workspaces(0).CommitTrans

    3.2.3.4 - CreateDatabase

    La mthode CreateDatabase permet de crer une nouvelle base de donnes. Elle renvoie un objet de typeDAO.Database.

    Syntaxe :

    Set database = Workspace.CreateDatabase (name, locale, [options])

    L'argument name correspond au nom complet de la base de donnes.locale est une constante reprsentant le tri appliquer (dbLangGeneral pour la France). Le dernier argument estfacultatif et permet de spcifier le codage et la version de la base de donnes.

    Exemple :

    Set db = DBEngine.Workspaces(0).CreateDatabase("c:\mabase.mdb", dbLangGeneral)

    3.2.3.5 - OpenDatabase

    Comme son nom l'indique, la mthode OpenDatabase ouvre une base de donnes. Elle renvoie un objet de typeDAO.Database.

    Syntaxe :

    Set database = workspace.OpenDatabase (dbname, options, read-only, connect)

    Dbname correspond au chemin d'accs de la base de donnes ouvrir. Cet argument peut aussi tre le nom d'unesource ODBC. Si cette chane est nulle, et que la variable connect vaut "ODBC;", une boite de dialogue de slectionde source de donnes est affiche.

    L'argument option permet de spcifier si la base de donnes doit tre ouverte en mode exclusif (True) ou pas (False).De plus l'argument read-only ouvre la base de donnes en lecture seule lorsqu'il vaut True.

    Enfin, l'argument connect est utilis la fois pour spcifier le type de base de donnes et le mot de passe pourouvrir le fichier.

    L'objet database cr est automatiquement ajout la collection Databases de l'objetWorkspace aprs sa cration.

    Exemple :

    Set db = DBEngine.Workspaces(0).OpenDatabase("c:\bd1.mdb", False, False, _ "MS Access;PWD=mdp#@#!e")

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 20 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    3.2.3.6 - Rollback

    La mthode Rollback met fin une transaction dmarre avec BeginTrans.

    Exemple :

    DBEngine.Workspaces(0).RollBack

    3.2.4 - Accder un groupe de travail spcifique

    Comme il a t prcis plus haut, l'objet Workspace prend de l'importance lorsqu'il s'agit d'ouvrir une base dedonnes scurise. En effet, lorsque que vous ouvrez un fichier mdb avec Access, vous tes authentifi au sein d'unfichier de groupe de travail. Cela peut tre le fichier System.mdw par dfaut si vous n'avez pas implment de gestionde scurit ou bien un fichier de votre cration rassemblant les informations ncessaires la protection de votre basede donnes. Or, il se peut que vous ayez besoin d'accder une autre base de donnes via DAO ncessitant d'utiliserun autre fichier mdw pour se connecter. Dans ce cas, il vous faut instancier un autre objet de type DAO.DBEngineet spcifier le chemin du fichier de groupe de travail utiliser dans la proprit DBEngine.SystemDB.

    Toutefois, cette mthode possde un inconvnient majeur. En effet, si vous essayez d'instancier un nouvel objetDBEngine alors que vous avez dj utilis des mthodes DAO auparavant dans votre code, il vous sera impossiblede modifier la proprit SystemDB du nouvel objet DBEngine cr. Celle-ci conservera pour valeur celle deApplication.DBEngine.SystemDB bien qu'aucune erreur ne soit leve lorsque vous tenterez de la modifier.

    Il est donc impratif que l'instanciation de nouveaux objets DBEngine ait lieu avant tout autreappel DAO y compris les mthodes CodeDb et CurrentDb.

    Je vous propose la cration d'une interface permettant d'ouvrir une base de donnes Access en spcifiant le fichiermdw utiliser.

    Soit le formulaire suivant :

    Il est compos de haut en bas :

    Une zone de texte TFichier Une liste modifiable ListeSecu Une zone de texte TAdmin Une zone de texte TUser

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 21 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    Une zone de texte TMDP

    Voici le code correspondant :

    Code du bouton Valider :

    Private Sub Commande10_Click()'Ouvre le fichier avec la scurit choisieOn Error GoTo errDim strfichier As StringDim oVDb As DAO.DatabaseDim chaine As StringDim oVWk As DAO.WorkspaceDim oDbe As DBEngineDim strFichierMDW As StringIf Len(TFichier) 0 Then

    strfichier = TFichier 'prpare l'espace de travail If ListeSecu.ListIndex = 0 Or ListeSecu.ListIndex = 2 Then Set oVWk = Workspaces(0) Else strFichierMDW = OuvrirUnFichier(Me.HWnd, _ "Selectionner un fichier de groupe de travail", 1, _ "Fichier mdw", "mdw") If strFichierMDW = "" Then Exit Sub Else Set oDbe = New DBEngine oDbe.SystemDB = strFichierMDW Set oVWk = oDbe.CreateWorkspace(Format(Now(), _ "yyyymmddhhnnss"), TUtilisateur, TMDP, dbUseJet) End If End If 'Ouvre la base de donnes If ListeSecu.ListIndex = 2 Or ListeSecu.ListIndex = 3 Then Set oVDb = oVWk.OpenDatabase(strfichier, False, False, _ "MS Access;PWD=" & TAdmin) Else Set oVDb = oVWk.OpenDatabase(strfichier) End IfElse MsgBox "Vous devez slectionner un fichier", _ vbExclamation, "Saisie du fichier"End IfExit Suberr:MsgBox "Impossible de se connecter la base de donnes. " & _ "Vrifier le chemin d'accs et les informations " & _ "d'authentification", vbCritical, "Erreur"End Sub

    Code d'ouverture du formulaire :

    Private Sub Form_Load()'Vide les controlesDim ctlT As ControlFor Each ctlT In Me.ControlsIf TypeOf ctlT Is TextBox ThenctlT.Value = ""If ctlT.Name "TFichier" Then ctlT.Enabled = FalseEnd IfNext ctlTListeSecu = "Aucune"End Sub

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 22 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    Code du bouton parcourir

    Private Sub Commande3_Click()Dim strChemin As StringstrChemin = OuvrirUnFichier(Me.Hwnd, _"Selectionner une base de donnes Access", _1, "Fichiers Access", "mdb")If strChemin "" ThenMe.TFichier = strCheminEnd IfEnd Sub

    La fonction OuvrirUnFichier est disponible dans la FAQ Access. Elle permet d'afficher une bote de dialogue deslection de fichier.

    La base de donnes ainsi ouverte est disponible via l'objet : VDB de la procdure du bouton Valider.

    Cette interface permet la fois de s'authentifier au sein d'un fichier de groupe de travail et de saisir le mot de passesystme pour l'ouverture de l'objet Database.

    Le choix du fichier de groupe de travail se ralise ici :

    Set oDbe = New DBEngineoDbe.SystemDB = strFichierMDWSet VWK = oDbe.CreateWorkspace(Format(Now(), _ "yyyymmddhhnnss"), TUtilisateur, TMDP, dbUseJet)

    La premire ligne permet d'instancier le nouveau moteur de base de donnes auquel nous spcifions ensuite lefichier mdw ouvrir. Puis nous crons enfin le l'espace de travail l'aide de la mthode CreateWorkspace.

    Une des raisons majeures pour lesquelles la cration de l'espace de travail lve une erreur est que le couple utilisateur- mot de passe est invalide dans le fichier mdw slectionn. Il se peut aussi que l'affectation de la proprit SystemDBait choue, ce qui signifie que le code de votre projet utilise des mthodes DAO avant ce bloc d'instructions. Unmoyen simple de le vrifier :

    MsgBox oDbe.SystemDBoDbe.SystemDB = FichierMDWMsgBox oDbe.SystemDB

    Si les deux MsgBox affichent le mme rsultat, cela indique que votre code utilise des instructions DAO avant cetteprocdure.

    3.3 - L'objet Database

    3.3.1 - Gnralits

    Comme vous avez pu le remarquer dans la fentre de base de donnes de l'application Access, un fichier mdb peuttre dcompos en deux parties :

    - La partie applicative. Elle regroupe la fois les formulaires, les tats, les modules et les macros.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 23 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    - La partie donnes. Cette partie se retrouve dans l'ensemble des SGBD (Systme de Gestion de Base de Donnes). Ils'agit des tables et des requtes. Access tant un SGBDR (SGBD Relationnel), cette partie regroupe aussi l'ensembledes relations entre les diffrentes tables.

    Le modle objet DAO donne accs la partie donnes via son objet Database. Cet objet est la racine du DDL(Langage de dfinition de donnes) et du DML (Langage de manipulation de donnes) sous DAO. C'est partir dece mme objet Database que l'on va crer les tables, les requtes, les relations et manipuler les donnes (Insert,Update, Delete).

    Comme il a t crit plus haut, un objet database peut tre instanci depuis un moteur de base de donnes(DBEngine) ou depuis un espace de travail (Workspace) l'aide des mthodes CreateDatabase et OpenDatabase.Ceci peut tre fait de manire explicite :

    Dim oDb As DAO.DatabaseSet oDb=DBEngine.CreateDatabase ()

    Ou de manire implicite :

    Dim oDb As DAO.DatabaseSet oDb=CreateDatabase()

    Toutefois, dans la majorit des cas, vous souhaitez utiliser la base de donnes courante ouverte dans Access. Il voussuffit alors d'utiliser les mthodes Application.CurrentDb ou Application.CodeDb.

    3.3.1.1 - La mthode CurrentDb

    Cette mthode fournie par l'objet Access.Application retourne une variable de type Database correspondant labase de donnes actuellement ouverte dans le logiciel Microsoft Access. La mthode Currentdb cre une nouvelleinstance de la base de donnes chaque appel. Aussi, vous devez rcuprer son rsultat dans une variable objetde type Database pour pouvoir l'exploiter.

    Voici ce qu'il ne faut pas utiliser :

    Dim Tbl As DAO.TableDef, Tbl2 As DAO.TableDefSet Tbl = CurrentDb.TableDefs("Table1")Set Tbl2 = CurrentDb.TableDefs("Table2")

    En effet, ce code fait un double appel Currentdb ce qui provoque une double instanciation de la base de donnescourante.

    Dim Tbl As DAO.TableDef, Tbl2 As DAO.TableDefDim Db as DAO.DatabaseSet Db=CurrentDbSet Tbl = Db.TableDefs("Table1")Set Tbl2 = Db.TableDefs("Table2")

    Ici, une seule instance de l'objet database est utilise.

    La proprit DBEngine.Workspaces(0).Databases(0) reprsente aussi la base de donnes ouverte. Toutefois, cettemthode est dconseille car elle ne cre pas une nouvelle instance de l'objet Database. Au contraire, son rsultatpeut tre considr comme un pointeur vers la base de donnes. Aussi, dans un environnement multi-utilisateurs,ceci peut engendrer des conflits d'accs aux donnes. Privilgiez donc la mthode CurrentDb.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 24 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    3.3.1.2 - La mthode CodeDb

    Contrairement la mthode CurrentDb qui renvoie la base de donnes active, cette mthode retourne un objetDatabase correspondant la base de donnes qui contient le code en cours d'excution .CodeDb est utiliser lors de la cration de complments ou de base de donnes bibliothques. En effet la base Add-in ne sera pas la base active. La mthode CurrentDb ne retournera donc pas le bon objet Database. Tout commeCurrentDb, Codedb retourne une nouvelle instance de l'objet Database. Vous devez donc rcuprer son rsultatdans un objet Database pour pouvoir l'exploiter.

    Dim Tbl As DAO.TableDef, Tbl2 As DAO.TableDefDim Db as DAO.DatabaseSet Db=CodeDbSet Tbl = Db.TableDefs("Table1")Set Tbl2 = Db.TableDefs("Table2")

    3.3.2 - Liste des proprits

    3.3.2.1 - CollatingOrder

    Type : Long

    Il s'agit de la mthode utilise par le moteur pour comparer les donnes de type texte.

    Les valeurs possibles sont :

    Constante SignificationdbSortGeneral Gnral (Franais, anglais ...)dbSortArabic ArabedbSortChineseSimplified Chinois simplifidbSortChineseTraditional Chinois traditionneldbSortCyrillic RussedbSortCzech TchquedbSortDutch NerlandaisdbSortGreek GrecdbSortHebrew HbreudbSortHungarian HongroisdbSortIcelandic IslandaisdbSortJapanese JaponaisdbSortKorean CorendbSortNeutral NeutredbSortNorwDan Norvgien et danoisdbSortPDXIntl Paradox InternationaldbSortPDXNor Paradox norvgien ou danoisdbSortPDXSwe Paradox sudois ou finnoisdbSortPolish PolonaisdbSortSlovenian SlovnedbSortSpanish EspagnoldbSortSwedFin Sudois ou finnoisdbSortThai ThadbSortTurkish TurcdbSortUndefined Indfini

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 25 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    3.3.2.2 - Connect

    Lecture Seule.

    Type : String

    La proprit Connect reprsente la chane de connexion utilise l'ouverture de l'objet Database. Lorsque que vousutilisez cette proprit sur une base au format Access, cette proprit est gale "".

    3.3.2.3 - Containers

    Type : Collection

    Cette collection regroupe l'ensemble des objets de type container contenu dans la base de donnes. Il s'agit del'ensemble des objets enregistrs dans la base de donnes. Vous y touverez par exemple des informations sur lesformulaires, les tats ...

    Cette proprit vous est founie titre d'information, en effet, un tutoriel entier pourrait lui treconsacr.

    3.3.2.4 - Name

    Lecture Seule.

    Type : String

    La proprit Name d'un objet Database retourne le nom de la base de donnes. Pour une base de donnes Access,il s'agit du nom du fichier mdb ainsi que le chemin d'accs complet vers ce fichier.

    3.3.2.5 - Properties

    Type : Collection

    Collection regroupant l'ensemble des objets Property de l'objet Database.

    3.3.2.6 - QueryDefs

    Type : Collection

    Cette collection regroupe l'ensemble des requtes enregistres dans la base de donnes.

    Cette partie sera largement dtaille dans la section 4.7 L'objet QueryDef.

    3.3.2.7 - RecordsAffected

    Lecture Seule.

    Type : Long

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 26 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    La proprit RecordsAffected retourne le nombre d'enregistrements qui ont t affects par le dernier ordre SQLde la mthode Execute. Cela permet de connaitre, par exemple, le nombre de lignes supprimes lors d'une requteDelete.

    Exemple d'utilisation :

    Dim Requete As StringDim DB As DAO.DatabaseRequete = "DELETE FROM MaTable WHERE ChampID>20"Set DB = CurrentDbDB.Execute RequeteMsgBox DB.RecordsAffected

    3.3.2.8 - Recordsets

    Lecture Seule.

    Type : Collection

    Cette collection regroupe l'ensemble des objets recordset ouverts dans la base de donnes.

    Cette partie sera largement dtaille dans le chapitre 5 Accs aux donnes.

    3.3.2.9 - Relations

    Type : Collection

    La proprit Relations est une collection regroupant l'ensemble des relations prsentes dans la base de donnes.Cette collection n'est utile que pour les SGBDR.

    Cette partie sera largement dtaille dans la section 4.6 L'objet Relation.

    3.3.2.10 - TableDefs

    Type : Collection

    Cette collection regroupe l'ensemble des tables enregistres dans la base de donnes. Dans le cas d'une base dedonnes incluant des tables lies, il existe aussi un objet TableDef pour chaque table attache.

    Cette partie sera largement dtaille dans la section : 4.3 L'objet TableDef.

    3.3.2.11 - Transactions

    Lecture Seule.

    Type : Boolean

    La proprit Transactions d'un objet Database indique si l'objet database supporte les transactions. Si oui, la valeurde la proprit est gale True.

  • Dfinition et manipulation de donnes avec DAO par Christophe WARIN

    - 27 -Copyright 2005 WARIN Christophe. Aucune reproduction, mme partielle, ne peut tre faite de ce site et de l'ensemble de son contenu : textes, documents,images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu' trois ans de prison et jusqu' 300 000 de dommages et intrts.

    http://warin.developpez.com/access/dao/

    Dans le cas d'une base de donnes Access, cette valeur est fixe True et les transactions sont disponibles viales objets Recordset Dynaset et Table.

    3.3.2.12 - Updatable

    Lecture Seule.

    Type : Boolean

    Si cette proprit est gale False, la base de donnes est protge en criture et vous ne pouvez modifier ni lesdonnes, ni la structure.

    3.3.2.13 - Version

    Lecture Seule.

    Type : String

    Cette proprit retourne la version du moteur Jet utilis pour crer la base de donnes. Dans le cas, d'une base dedonnes Access au format 2000 ou ultrieur, cette proprit est gale 4.0.

    3.3.3 - Liste des mthodes

    3.3.3.1 - Close

    La mthode Close ferme la base de donnes. Toutefois, cela ne libre pas la mmoire allou l'objet database. Pourlibrer la mmoire, vous devez affecter Nothing la variable.

    3.3.3.2 - CreateProperty

    La mthode CreateProperty cre et retourne un objet Property.

    Syntaxe :

    Set property = object.CreateProperty (name, type, value, DDL)

    Nous reviendrons plus en dtails sur les objets property dans le chapitre suivant.

    3.3.3.3 - CreateQueryDef

    La mthode CreateQueryDef cre une nouvelle requte et retourne l'objet QueryDef correspondant. L'objet