' COPIEZ LE CODE CI-DESSOUS DANS UN MODULE DE CLASS, VOUS AVEZ ACCES AUX OBJETS DB ET RS
Option Explicit
' msado25.tlb (Microsoft ActiveX Data Objects 2.5 Library)
' msadox.dll (Microsoft ADO Ext. 2.7 for DLL and Security)
Public Enum eDBJetEngineType
Jet10 = 1
Jet11 = 2
Jet20 = 3 '(Access 2)
Jet3x = 4 '(Access 97)
Jet4x = 5 '(Access 2000, XP-2002, 2003)
End Enum
'
Public DB As New ADODB.Connection
Public RS As New Recordset
' CONNEXION
Public Function DBConnect(ByVal sDBPath As String, Optional ByVal sPassword As String = vbNullString, Optional ByVal eDBJetEngine As eDBJetEngineType = Jet4x) As Boolean
Me.DBClose
With DB
.Provider = "Microsoft.jet.OLEDB.4.0;Data Source=" & sDBPath & ";Jet OLEDB:Database Password=" & sPassword & ";Jet OLEDB:Engine Type=" & CStr(eDBJetEngine) & ";"
On Error GoTo Err_Handler
.Open
DBConnect = True
Exit Function
End With
Err_Handler:
Debug.Print "[DBConnect] " & Err.Number & " : " & Err.Description
End Function
' FERMETURE DB
Public Sub DBClose()
Me.DB.Cancel
If Me.DBConnected Then Me.DB.Close
End Sub
' BASE CONNECTéE ?
Public Function DBConnected() As Boolean
DBConnected = Not (Me.DB.State = adStateClosed)
End Function
' REQUÊTE
Public Function RSExecute(ByVal sSql As String) As Boolean
If Me.DBConnected Then
Call RSClose
Me.RS.CursorLocation = adUseClient
On Local Error GoTo Err_Handler
Me.RS.Open sSql, Me.DB, adOpenDynamic, adLockOptimistic, -1
RSExecute = True
End If
Exit Function
Err_Handler:
Debug.Print "[RSExecute] " & Err.Number & " : " & Err.Description
End Function
' FERMETURE RS
Private Sub RSClose()
Me.RS.Cancel
If Not (Me.RS.State = adStateClosed) Then Me.RS.Close
End Sub
' DESTRUCTION CLASS
Private Sub Class_Terminate()
Call RSClose: Set Me.RS = Nothing
Me.DBClose: Set Me.DB = Nothing
End Sub