2. La hiérarchie du modèle DAO▲
2-1. Le modèle objet▲
Voici une représentation du modèle objet DAO :
Comme vous pouvez le remarquer, le modèle objet DAO possède une structure hiérarchisée dont la racine est un objet DBEngine. Les relations de descendance sont de type un à plusieurs. Cela signifie que chaque objet parent possède 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 possède une collection d'objet Workspace. Cette collection est nommée Workspaces.
Précisons aussi que ce schéma a été réduit uniquement à la partie définition de données (en bleu) et à la partie manipulation de données (en vert). De plus, chaque branche a été réduite pour améliorer la lisibilité. Comme tout autre objet, un objet DAO possède un ensemble de propriétés (property). Celles ci sont regroupées dans une collection nommée properties propre à chaque objet. Voici un exemple du schéma réel à appliquer aux objets TableDef.
L'utilisation de DAO implique de nombreuses déclarations de variables. Ceci demande beaucoup de rigueur. Aussi je vous invite à consulter le tutoriel sur les conventions de nommage Visual Basic écrit par Jean-Philippe AMBROSINO : Les conventions typographiques en VBA (illustrées sur Access)
2-2. Quelques rappels sur les collections▲
Etant donné que DAO est un modèle objet et qu'il utilise de nombreuses collections, je vous propose quelques rappels sur le traitement des collections d'objets sous Visual Basic.
2-2-1. Accéder à un élément d'une collection▲
Il existe deux techniques afin d'accéder à un objet d'une collection :
Accès via l'index : Il s'agit d'utiliser la position de l'élément dans la collection en sachant que le premier possède l'index zéro.
Syntaxe :
MaCollection.Item
(
2
)
Accès via la clé : Il s'agit d'utiliser le nom de l'élement lorsque celui-ci est connu.
Syntaxe :
MaCollection.Item
(
"MonItem"
)
La propriété Item est le membre par défaut des objets de type Collection. Vous pouvez donc utiliser indifféremment :
Syntaxe :
MaCollection.Item
(
"MonItem"
)
Ou :
Syntaxe :
MaCollection.
(
"MonItem"
)
2-2-2. Compter les éléments▲
Sous Visual Basic, les collections proposent la propriété Count qui renvoie le nombre d'objets dans la collection.
Syntaxe :
MaCollection.Count
Etant donné que le premier élément a pour index 0, on en conclut aisément que le dernier élément de la collection possède l'index : Count - 1
2-2-3. Parcourir les éléments d'une collection▲
Une nouvelle fois, il est possible d'utiliser deux méthodes. La première consiste en une boucle sur l'index de la collection jusqu'au dernier élément.
Voici un exemple :
Dim
i As
Integer
, nbMax As
Integer
'Récupère le nombre de Workspace
nbMax =
DBEngine.Workspaces.Count
-
1
'Boucle sur l'index
For
i =
0
To
nbMax
'Affiche le nom de l'objet
MsgBox
DBEngine.Workspaces
(
i).Name
Next
i
La seconde méthode utilise une boucle For Each … In … Next pour parcourir un à un les objets de la collection.
Ainsi :
Dim
oWks As
DAO.Workspace
For
Each
oWks In
DBEngine.Workspaces
'Affiche le nom de l'objet
MsgBox
oWks.Name
Next
oWks
Peut être traduit par :
Pour chaque objet Workspace de la collection Workspaces du DBEngine
Afficher le nom de l'objet
Fin Pour
Cette dernière méthode possède un avantage dans le cas de collections hétérogènes. Imaginons une collection d'objets O1 et O2. Pour parcourir uniquement les éléments de type O1, nous aurions par exemple :
Dim
oTmpObjet as
TypeO1
For
Each
oTmpObjet In
MaCollection
'Traitement à effectuer
Next
oTmpObjet
2-2-4. Ajouter un élément▲
Les collections DAO sont munies de la méthode Append qui permet d'ajouter un élément. Sa syntaxe est la suivante :
MaCollection.Append
MonObjet
Notons tout de même que pour être ajouté, l'objet doit être instancié auparavant, sans quoi il sera impossible de l'ajouter. De même, il est impossible d'ajouter un objet si un autre objet présent dans la collection possède le même nom. Vous trouverez de nombreux exemples de la méthode Append dans la suite de ce document.
2-2-5. Supprimer un élément▲
La méthode Delete appliquée aux collections DAO permet de supprimer l'élément dont le nom est passé en paramètre. La syntaxe de cette méthode est la suivante :
MaCollection.Delete
"MonItem"