Article Dao
-
Upload
little-bunny-foo-foo -
Category
Documents
-
view
46 -
download
0
description
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