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"
|
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
|