Ragazzi...ho un problemino.Con questa funzione mi rimane la connessione al db aperta.Non riesco a capire come chiuderla.Ecco il codice:
codice:
Option Explicit
Public Function ControlloPassword(ByRef adoCN As ADODB.Connection, ByVal sPathMDB As String, Optional ByVal sPasswordDB As String = "") As Boolean
Dim sqlExecStr As String
Dim iOldMode As ADODB.ConnectModeEnum
Dim sConnectionString As String
Dim sOldpassword As String
Dim sNewPassword As String
Dim bOnTransaction As Boolean
On Error GoTo ERR_HANDLER
Rem ------------------------------------------------------------
Rem La connessione è già aperta, verifico se è esclusiva
Rem ------------------------------------------------------------
If Not adoCN Is Nothing Then
iOldMode = adoCN.Mode ' annoto la modalità precedente
If adoCN.Mode <> adModeShareExclusive Then
adoCN.Close ' chiudo la connessione
End If
End If
Rem ------------------------------------------------------------
Rem Se il cursore non è Server chiudo la connessione, se è aperta
Rem ------------------------------------------------------------
If Not adoCN Is Nothing Then
If adoCN.CursorLocation <> adUseServer Then
If adoCN.State = adStateOpen Then
adoCN.Close
End If
End If
End If
Rem ------------------------------------------------------------
Rem Riapro la connessione in modalità esclusiva e lato Server
Rem per poter usare una trasazione nel caso di errori.
Rem ------------------------------------------------------------
sPathMDB = App.path & "\" & "database.mdb"
With adoCN
.CursorLocation = adUseServer
.Mode = adModeShareExclusive
.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sPathMDB '& ";;Jet OLEDB:Database Password=" & sPasswordDB
.BeginTrans
GoTo APRI
Exit Function
.CommitTrans
bOnTransaction = False
.Close
End With
Exit Function
Rem ------------------------------------------------------------
APRI:
If MsgBox("Nessuna password impostata.Vuoi Impostarla adesso?", vbYesNo, "Impostazione Password") = vbYes Then
sNewPassword = InputBox("Inserisci la nuova password:", "Password")
AddDBPassword CN, sPathMDB, sNewPassword
Else
MsgBox "Sarà per la prossima volta!!", vbOKOnly, "Impostazione Password"
End If
ERR_HANDLER:
If Err.Number = -2147217843 Then
If MsgBox("Password già impostata!!Vuoi modificarla?", vbYesNo, "Controllo Password:") = vbYes Then
sOldpassword = InputBox("Inserisci la vecchia password:", "Password")
sNewPassword = InputBox("Inserisci la nuova password:", "Password")
ChangeDBPassword CN, sPathMDB, sOldpassword, sNewPassword
Else
MsgBox "La potrai impostare quando vorrai!"
Exit Function
End If
End If
If Err.Number = 3705 Then
adoCN.Close
' ControlloPassword CN, sPathMDB, sPasswordDB
End With
End If
Exit Function
End Function
Tramite questa funzione io verifico se è già stata impostata una password o no.Però mi sorge un problema e mi dice che non la può modificare perchè l'oggetto è aperto.Perchè?