Module de classe : base de données adodb

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 011 fois - Téléchargée 27 fois

Contenu du snippet

C'est juste un petit module de classe basé sur une source sur ce site.
C'est d'un niveau débutant. Il permet de se connecter à une base de données ACCESS ou une autre en ADODB.

Source / Exemple :


Option Explicit

' /// Variables pour la Connexion ADODB /////////////////////////////////////////////////////////////////////////////////////////
Private pdbConnection As New ADODB.Connection
Private pdbRecordsetADO As New ADODB.Recordset

' /// variables locales de stockage des valeurs de propriétés  //////////////////////////////////////////////
Private cTempdbPath As String 'copie locale
Private cTempdbType As String 'copie locale
Private cTempdbUser As String 'copie locale
Private cTempdbDriver As String 'copie locale
Private cTempdbPassword As String 'copie locale
Private cTempdbServeur As String 'copie locale
Private cTempdbDSN As String 'copie locale
Private cTempdbName As String 'copie locale

Public Property Let dbName(ByVal vData As String)
    cTempdbName = vData
End Property

Public Property Get dbName() As String
    dbName = cTempdbName
End Property

Public Property Let dbDSN(ByVal vData As String)
    cTempdbDSN = vData
End Property

Public Property Get dbDSN() As String
    dbDSN = cTempdbDSN
End Property

Public Property Let dbServeur(ByVal vData As String)
    cTempdbServeur = vData
End Property

Public Property Get dbServeur() As String
    dbServeur = cTempdbServeur
End Property

Public Property Let dbPassword(ByVal vData As String)
    cTempdbPassword = vData
End Property

Public Property Get dbPassword() As String
    dbPassword = cTempdbPassword
End Property

Public Property Let dbDriver(ByVal vData As String)
    cTempdbDriver = vData
End Property

Public Property Get dbDriver() As String
    dbDriver = cTempdbDriver
End Property

Public Property Let dbUser(ByVal vData As String)
    cTempdbUser = vData
End Property

Public Property Get dbUser() As String
    dbUser = cTempdbUser
End Property

Public Property Let dbType(ByVal vData As String)
    cTempdbType = vData
End Property

Public Property Get dbType() As String
    dbType = cTempdbType
End Property

Public Property Let dbPath(ByVal vData As String)
    cTempdbPath = vData
End Property

Public Property Get dbPath() As String
    dbPath = cTempdbPath
End Property

' /// Ouverture de la Base de Données /////////////////////////////////////////////////////////////////////////

Public Function Connexion() As Long
On Error GoTo Connexion_Error

    Select Case cTempdbType
        Case "ACCESS"
            pdbConnection.Provider = cTempdbDriver
            pdbConnection.ConnectionString = cTempdbPath
            pdbConnection.Open
            
        Case "AUTRE"
            If Len(cTempdbDSN) > 0 Then
                pdbConnection.ConnectionString = "DSN=" & cTempdbDSN & "UID=" & cTempdbUser & ";PWD=" & cTempdbPassword & ";"
            Else
                pdbConnection.ConnectionString = "UID=" & cTempdbUser & ";PWD=" & cTempdbPassword & ";" & "DRIVER=" & cTempdbDriver & ";Server=" & cTempdbServeur & ";Database=" & cTempdbName & ";"
            End If
            
            pdbConnection.Open
    End Select
   
    On Error GoTo 0
    Exit Function

Connexion_Error:
    Connexion = Err.Number
'    MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Connexion dans Module de classe cDataBase", vbCritical
End Function

' /// Envoi du RecordSet //////////////////////////////////////////////////////////////////////////////////////

Public Function OpenRecordSet(dbSQL As String, Optional dbOption) As ADODB.Recordset
On Error GoTo OpenRecordSet_Error

    If dbSQL <> "" Then
        pdbRecordsetADO.CursorLocation = adUseClient
        pdbRecordsetADO.CursorType = adOpenDynamic
        pdbRecordsetADO.LockType = adLockOptimistic
        pdbRecordsetADO.Open dbSQL, pdbConnection
        Set OpenRecordSet = pdbRecordsetADO
        Set pdbRecordsetADO = Nothing
    End If
    
   
    On Error GoTo 0
    Exit Function

OpenRecordSet_Error:

    MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure OpenRecordSet dans Module de classe cDataBase", vbCritical
End Function

' /// Exécution d'une Requête SQL /////////////////////////////////////////////////////////////////////////////

Public Sub Execute(dbSQL As String)
On Error GoTo Execute_Error

    pdbConnection.Execute dbSQL
   
    On Error GoTo 0
    Exit Sub

Execute_Error:

    MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Execute dans Module de classe cDataBase", vbCritical
End Sub

' /// Fermeture de la connexion avec la Base de Données ///////////////////////////////////////////////////////

Public Sub Fermeture()
On Error GoTo Fermeture_Error

    pdbConnection.Close
    Set pdbConnection = Nothing
   
    On Error GoTo 0
    Exit Sub

Fermeture_Error:

    MsgBox "Erreur " & Err.Number & " (" & Err.Description & ") dans la procédure Fermeture dans Module de classe cDataBase", vbCritical
End Sub

A voir également

Ajouter un commentaire

Commentaires

Messages postés
10
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
20 janvier 2006

Salut
C'est exact, il serait plus judicieux d'utiliser plutôt :
"Select Case cTempdbType "
('Select Case dbType' fait appel à la méthode Get dbType, et par conséquent il vaut mieux utiliser la variable locale cTempdbType)

Et en effet, il ne faut pas oublier non plus d'ajouter la reférence Microsoft ActiveX Data Objects 2.8 Library.

Ce module de classe est vraimment tout bête, dans l'appli que j'avais développé, il permettait juste de ne pas avoir à modifier le code du programme si l'utilisateur souhaite changer le type de la base de donnée.

J'ai aussi volontairement utilisé le même nom que les fonctions standard de ADO (Execute et OpenRecordSet) ce qui limite le nombre de modifications à effectuer dans le programme.
(déclarer la base de donnée en "New ClsDatabase" au lieu de "DataBase", déclarer les recordsets en "New ADODB.Recordset" au lieu de "Recordset", et enfin définir les paramètres de connexion à la base de donnée)
Messages postés
3
Date d'inscription
vendredi 7 mai 2004
Statut
Membre
Dernière intervention
2 décembre 2005

salut,
je pense qu'il y a une petite erreur à la ligne 90.
Ne faudrait-t-il pas retirer le "pdbArticle" puisqu'il n'est pas connu ici.

'Select Case pdbArticle.dbType' => 'Select Case dbType'

De plus, je peux ajouter qu'il ne faut pas oublier d'aller dans le menu PROJECT -> REFERENCES et cocher la case ou il est écrit:
Microsoft ActiveX Data Objects 2.8 Library
afin que l'objet ADODB soit connu

Sinon, merci pour le code, j'en avais besoin étant donné que je suis débutant sur VB
Messages postés
10
Date d'inscription
jeudi 6 mai 2004
Statut
Membre
Dernière intervention
20 janvier 2006

Dans le programme

Pour Déclarer la base :

Dim pBase as New ClsDatabase



Pour Affecter les variables (dbPath, dbDriver...) :

pBase.dbType "ACCESS" ou pBase.dbType "AUTRE"
pBase.dbPath = Mon_Chemin
...



Pour Ouvrir la connexion :

pBase.Connexion



Pour Ouvrir un recordset :

Set Recordset = pBase.OpenRecordset("Select * from..")




Pour Executer une requête SQL simple :

pBase.Execute "Update ..."



Pour Fermer la connexion :

pBase.Fermeture

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.