ADO permet de ne plus avoir recours à plusieurs interfaces car il fournit des "providers" vers toutes les sources de données. Visual Basic permet l'utilisation de plusieurs interfaces d'accès aux données. Le modèle ADO permet un accès simplifié aux données en utilisant trois types d'objets qui peuvent être utilisés séparément :
Les objets ADO vous offrent un accès simple et rapide aux données de tout types. Le modèle ADO comporte trois composants principaux: l'objet Connection, Command, Recordset.
ADO (Active X Data Object) permet d'accéder à une source de données et de manipuler son contenu. Il offre un accès universel aux données. De nombreuses plates-formes de développement prennent en charge ADO (VB, C++ -,ASP, Vb script, etc.)
Pour utiliser ADO dans une application Access VBA, vous devez créer une Référence à la bibliothèque Microsoft Activex Data Object 2.7 Library
Se mettre dans l'éditeur Visual Basic
Menu Outils - Références
Un objet Connection représente une session unique avec une source de données. Dans le cas d'un système de base de données client/serveur, il peut correspondre à une connexion réseau au serveur.
' Dim MaConnexion As Connection
' Set Maconnexion = New Connection
Il s'agit ensuite de déterminer les paramètres de connexion à une source de données. Il faudra indiquer quel est le Provider, c'est à dire le type de fournisseur de données :
' ' Pour access 2000 (Adaptez le provider en fonction de la source de données que vous utilisez) MaConnexion.Provider = "Microsoft.Jet.oledb.4.0"
Ensuite, il suffira d'ouvrir la connexion grâce à la méthode Open:
' MaConnexion.Open "c:\..."
en indiquant pour ce type de Provider le nom physique du fichier Access.
Un objet Command représente la définition d'une commande spécifique que vous allez exécuter sur une source de données.
Un objet Command permet de consulter une base de données et de renvoyer des enregistrements dans un objet Recordset, d'exécuter une opération globale ou de manipuler la structure d'une base de données
' Dim MaCommande as Command Set MaCommande = New Command With MaCommande ' Evite de retaper MaCommande sur chaque ligne .ActiveConnection = MaConnexion .CommandText = "select * from vehicule" .Execute End With
Tout d'abord il faut déclarer la variable associée à la connexion.
' Dim MaConnexion As Connection 'Ouverture d'une connexion Set MaConnexion = New Connection
Définir le Provider, c'est à dire le type de fournisseur de données:
' MaConnexion.Provider = "Microsoft.Jet.oledb.4.0"
Ouvrir la connexion grâce à la méthode Open
' MaConnexion.Open "c:\..."
Il faut indiquer pour ce type de Provider le nom physique du fichier Access
Exemple : "d:\TestADO\ Test ADO sans DSN .mdb "
L'objet Recordset permet à une application d'accéder aux données renvoyées par une requête SQL. Cette requête peut être créée par l'application ou peut résider sur le serveur en tant que procédure stockée.
Les curseurs permettent de se déplacer dans un Jeu d'enregistrements
Types de curseurs :
Static | adOpenStatic | Copie statique d'un jeu d'enregistrements qui vous permet de retrouver des données. L'ajout, suppression ou modification effectuées par d'autres utilisateurs ne sont pas visibles. |
En Avant | adOpenFowardOnly | Utilisé par défaut, équivalent au statique mais ne permet que de faire défiler les enregistrements vers l'avant. |
bynamic | adOpenBynamic | Les ajouts, suppressions ou modifications effectuées par d'autres utilisateurs sont visibles. Tous déplacements sont possibles dans le jeu d'enregistrements. |
Jeu de valeurs Clés | adOpenKeyset | Les enregistrements ajoutés par les autres utilisateurs ne sont pas visibles. Les enregistrements supprimés par d'autres utilisateurs ne sont pas accessibles à partir du jeu d'enregistrements en cours. Seules des clés sont envoyées au jeu d'enregistrement contrairement aux autres curseurs qui envoient la totalité des informations. |
Nous pouvons également indiquer au jeu d'enregistrements comment verrouiller les données aux cours de leur manipulation via le curseur.
AdlockReadonly | Valeur par défaut (lecture seule) |
AdlockPessimistic | Verrouillage pessimiste. Le fournisseur assure une modification correcte des enregistrements, en verrouillant, dans la source de données, dès modification. |
AdlockOptimistic | Ne verrouille qu'au moment de l'appel de la méthode Update |
AdlockBatchOptimistic | Mise à jour par lots, en opposition à la mise à jour immédiate. |
Dans un premier temps nous allons créer dans un module une constante de type chaîne qui va contenir le nom physique de la base (ce qui nous permettra de modifier une seule fois la constante le cas échéant).
' Public Const NomBaseMDB = "d:\TestADO\Test_ADO_sans_DSN.mdb"
Déclaration de la source de donnée et du recordset
' Option Explicit Dim MaConnexion As Connection Dim MaRequete As Recordset Private Sub Form_Load() Set MaConnexion = New Connection With MaConnexion .Provider = "Microsoft.Jet.oledb.4.0" ' 3.51 pour access 97 .Open NomBaseMDB ' End With Set MaRequete = New Recordset With MaRequete .ActiveConnection = MaConnexion .Open "select * from T_Clients" , , adOpenDynamic, adLockPessimistic End With End Sub
Un recordset peut utiliser plusieurs types de curseurs, ici, adOpenDynamic pour permettre les différentes options de parcours :
' 'Définir le curseur pour pouvoir se déplacer en arrière dans une requête. 'Sinon par défaut la requête est de type en avant seulement. MaRequete.CursorType = adOpenDynamic 'Retirer le verrouillage pour autoriser les modifications. MaRequete.LockType = adLockOptimistic
[... End Of Tutorial ...]