logo UsualSoft   Skip Navigation Links
Accueil
Références
Formations
TutorielsExpand Tutoriels
Liens téléchargements

Contact : cgruchet@hotmail.com - Tél: 06 22 82 90 55
Microsoft Certified Professional
Cours : Visual-Basic

Bases de données 

La bibliothèque ADO

Claude Gruchet

La bibliothèque mise en avant par Microsoft est l'OLE-DB qui est l'outil d'avenir (et du présent !) pour cet éditeur. Avant de l'utiliser dans un projet, il faut la déclarer dans "Projet / Références". La bibliothèque à cocher est "Microsoft ActiveX Data Objects vX.X" où vX.X est le numéro de version de la bibliothèque. En général, il est conseillé d'utiliser la version la plus récente installée sur votre machine (s'il y en a plusieurs).

Du fait de son universalité, le modèle ADO est très horizontal .... Il ne contient que 3 objets qui sont :

- L'objet CONNECTION
- L'objet COMMAND
- L'objet RECORDSET


ADODB.CONNECTION

C'est l'objet qui permet la connexion (comme son nom le laisse penser !) à la base de données. Cela ce fait à l'aide d'une chaîne de connexion (ConnectionString) qui peut faire référence soit à un provider OLE-DB et à une source de données (la database) soit à un DSN système ce qui permet de passer très facilement de l'environnement de développement à ceux de test et de production.


strConnect = "DSN=DatasFact"



  Cliquez ici pour lire la page traitant des DSN système sous Windows.

ConnectionString

Nous avons déjà étudié cette propriété dans notre leçon sur le contrôle Data ADO. Une chaîne de connexion ADO est tout à fait semblable à une chaîne ODBC, voici un exemple :


strConnect = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source = D:\Datas\Fac_Data.mdb"

 


Cette chaîne permet d'accéder à une base Ms-Access97 (driver Jet.OLEDB.3.51) qui s'appelle Fac_Data.mdb et qui se trouve dans le répertoire \Datas du disque D:
L'utilisation d'un DSN système permet de simplifier la syntaxe de la chaîne de connexion par exemple :

 

 

Dans ce cas, toutes les informations de connexion sont contenues dans le DSN système que vous avez créé grâce au panneau de configuration Windows.

 


Utilisation d'une connexion OLE-DB 

Dans la bibliothèque OLE-DB (objets ADO), l'objet DataBase n'existe pas. Lorsque l'on est habitué à travailler avec DAO et le moteur Jet, cela peut perturber quelque peu ! Vous allez voir que, avec un peu d'habitude, on s'en passe très bien. En fait, l'objet "Connection"  est là pour réaliser les tâches pour lesquelles nous utilisions l'objet DataBase dans DAO.


Voici un exemple de connexion à une base de données ACCESS 97 via OLE-DB :

 

Dim lcon As ADODB.Connection
   Set lcon = New ADODB.Connection
   lcon.ConnectionString = " Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=D:\Datas\Fac_Data.mdb"
   lcon.Open


Le même exemple utilisant une DSN nommé "BaseFacData" :


Dim lcon As ADODB.Connection
   Set lcon = New ADODB.Connection
   lcon.ConnectionString = "DSN = BaseFacData"
   lcon.Open



Il est aussi possible de ne pas utiliser la chaîne de connexion, dans ce cas, on utilise les propriétés de l'objet "Connection" :


Dim lcon as New ADODB.Connection

With lcon

   .Provider = "Microsoft.Jet.OLEDB.3.51"

   .Properties("Data Source") = "D:\Datas\Fac_Data.mdb"

   .open

End With



Provider

Cette propriété de l'objet Connection permet de déclarer le provider OLE-DB que votre programme doit utiliser. Ces fournisseurs de données sont installés grâce à l'exécution d'un exécutable de type : MDAC_TYP_Fr2-51.exe (téléchargeables sur le site de Microsoft ). Ils sont automatiquement installés lorsque vous demandez la mise en place des "Data Access Components" à la fin de l'installation de VB6.

Un utilitaire très pratique le "Component Checker" (Comcheck.exe) est, lui aussi, téléchargeable sur le site de Microsoft et permet d'afficher la ou les versions installée(s) sur votre système après une analyse minutieuse de la base de registre.





ADODB.COMMAND

Cet objet est utilisé pour stocker des commandes SQL ou des noms de procédures stockées. On va pouvoir utiliser une même phrase SQL avec différents objets "Connection" par exemple ...

Dim loConOne As New ADODB.Connection
Dim loConTwo As New ADODB.Connection
Dim loRsOne As New ADODB.Recordset
Dim loRsTwo As New ADODB.Recordset
Dim loCmd As New ADODB.Command
Dim loFld As New ADODB.Field
   loConOne.ConnectionString = " Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=D:\Datas\Fac_Data.mdb"
   loConOne.Open
   loConTwo.ConnectionString = " Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=D:\Datas\Fac_DataArchive
   loConTwo.Open
   With loCmd
      .ActiveConnection = loConOne
      .CommandType = adCmdText
      loCmd.CommandText = "SELECT * FROM Commandes ;"
   End With
   loRsOne.Open loCmd
   If not (loRsOne.BOF And loRsOne.EOF) Then
      ‘ Travail sur les enregistrements
      For Each loFld in loRsOne.Fields
         MsgBox("Le champ : " & loFld.Name & " vaut " & loFld.Value )
      Next loFld
   End If
   ‘ ----- On change de base de données -----
   loCmd.ActiveConnection = loConTwo
   loRsTwo.Open loCmd
   If not (loRsTwo.BOF And loRsTwo.EOF) Then
      ‘ Travail sur les enregistrements
      For Each loFld in loRsTwo.Fields
         MsgBox("Le champ : " & loFld.Name & " vaut " & loFld.Value )
      Next loFld
   End If
   Set loCmd = nothing
   loRsOne.close: Set loRsOne = nothing
   loRsTwo.close: Set loRsTwo = nothing
   loConOne.Close: Set loConOne = nothing
   loConTwo.Close: Set loConTwo = nothing


ADODB.RECORDSET

Tout comme en DAO, c'est un jeu d'enregistrements, résultat d'une requête SELECT. Il est composé de différents Records eux mêmes composés de Fields
(voir aussi l'exemple ci-dessus pour l'objet Command)



Dim lrst        as ADODB.RecordSet

 

Set lrst = New ADODB.RecordSet

lrst.activeConnection = lcon

With lrst

    .CursorLocation = adUseServer
    .CursorType = adOpenKeyset
    .LockType = adLockOptimistic

    .open "SELECT * FROM Clients;"

End With