1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
| Sub ChangerMotDePasse()
Dim Wksp As DAO.Workspace, Conn As DAO.Connection, strODBCconn As String
Dim r As DAO.Recordset, qd As DAO.QueryDef, strSQL As String
Dim strUID As String, strPWD As String, strNwPWD As String
Dim lngAffRecs As Long
Dim errX As DAO.Error, strErrMsg As String
strUID = "NomUtilisateur"
strPWD = "MotDePasseEnCours"
strNwPWD = "NouveauMotDePasseEnCours"
On Error GoTo ERRH
' Créer un nouveau workspace de type ODBC
Set Wksp = DBEngine.CreateWorkspace("Wksp2", "Admin", "", dbUseODBC)
' Chaîne de connexion ODBC
strODBCconn = "ODBC;Driver={SQL Server};Server=LZ2;Database=MOP;" & _
"Uid=" & strUID & ";Pwd=" & strPWD
' Ouverture connexion ODBC
Set Conn = Wksp.OpenConnection("", dbDriverNoPrompt, , strODBCconn)
' Instruction SQL : EXEC sp_password MotDePasseEnCours, NouveauMotDePasseEnCours
strSQL = "EXEC sp_password '" & strPWD & "', '" & strNwPWD & "'"
' Création requête temporaire
Set qd = Conn.CreateQueryDef("")
' Affectation du SQL à la requête
qd.SQL = strSQL
' Exécution requête
qd.Execute
' Requête INSERT/UPDATE/DELETE : Nbre d'enregistrements affectés
lngAffRecs = Conn.RecordsAffected
QUIT:
If Not qd Is Nothing Then qd.Close
If Not Conn Is Nothing Then Conn.Close
If Not Wksp Is Nothing Then Wksp.Close
Exit Sub
ERRH:
strErrMsg = CStr(Err.Number) & ":" & Err.Description & vbCrLf & _
"-------------------------------------------------------"
'Récupérations Erreur(s) driver ODBC
For Each errX In DBEngine.Errors
strErrMsg = strErrMsg & vbCrLf & Format(errX.Number, "00000") & " : " & errX.Description
Next
Err.Clear
'Debug.Print strErrMsg
MsgBox strErrMsg
Resume QUIT
End Sub |
Partager