0/5 (3 avis)
Snippet vu 10 414 fois - Téléchargée 29 fois
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
13 déc. 2005 à 16:38
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)
2 déc. 2005 à 14:57
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
13 oct. 2005 à 10:42
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.