Connexion à une bdd à partir de visual basic avec ado

Connexion à une bdd à partir de visual basic avec ado

Active Data Objects

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 :

Présentation du modèle

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.

  • L'objet Connection est celui qui s'occupe du niveau le plus élève. Il est utilisé pour établir une connexion entre `application et une source de données externe.
  • L'objet Command sert à créer des requêtes pour accéder aux enregistrements d'une source de données généralement renvoyer dans un recordset.
  • L'objet Recordset permet d'accéder aux enregistrements renvoyés par une requête SQL. Cet objet permet de naviguer dans les enregistrements renvoyés, ajouter, modifier ou en supprimer. (identique à la DAO 3.51).

Création de la référence à ADO

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

L'objet Connection

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.

Déclaration

'
Dim MaConnexion As Connection

Création d'une instance

'
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.

L'objet Command

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

Démarche ADO (Active X Data Object)

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 "

Utiliser une requête

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.

Principales propriétés de l'objet Recordset

Notion de curseurs

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.

Les verrouillages

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.

Exemple

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 ...]

Ce document intitulé « Connexion à une bdd à partir de visual basic avec ado » issu de CodeS SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.