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è?