Salve a tutti, ho un dubbio da un po' di tempo...
Perchè l'oggetto RecordSet in presenza di un errore dell'applicazione, gestita, non viene chiuso?
Proprio oggi ho ripreso un vecchio script nel quale la gestione dell'errore non chiude il recordset e non mi permette di invocare un'altra sub nella quele io posssa usare lo stesso oggetto. So che da spiegare è un casino...posto un po' di codice:
Codice PHP:
ApriConn()
    
'Imposto il recordset
Set objRs = Server.CreateObject("ADODB.RecordSet")

'
Aggiorno il DB se non sono stati riscontrati errori in fase di compilazione del modulo
If Not (blnErroreModuloThen aggiornaBaseDati()

If (
blnErroreApplicazioneThen impostaMarche()
    
Set objRs Nothing
ChiudiConn
() 
In aggiornaBaseDati() gestisco l'errore di applicazione con il classico On Error Resume Next...altro codice:

Codice PHP:
Sub aggiornaBaseDati()
On Error Resume Next
'Query
strSql = "SELECT * FROM tabella"
'
Tipo di cursore per la navigazione nel recset Foreward Only
objRs
.CursorType 0
'Tipo di blocco per l'aggiornamento sul recset 
objRs
.LockType 3
'Apro recset
objRs.Open strSql, objCn
'
Inserisco il nuovo record
objRs
.AddNew
objRs
.Fields.Item("Campo").Value variabile
'Aggiorno
objRs.Update
'
Chiudo RecordSet
objRs
.Close

'Gestisco, se presente, l'errore dell'applicazione
If Err.Number <> 0 Then
    '
Attivo errore applicazione
    blnErroreApplicazione 
True
    On Error 
GoTo 0
End 
If

End Sub 
In impostaMarche() popolo una select dinamica utilizzado alcuni campi del DB. Fin qui nessun porblema. Ma se dovesse esserci un errore di applicazione, gestito in precedenza nella Sub aggiornaBaseDati(), la sub impostaMarche() non può utilizzare il recordset, in questo caso objRs, perchè aperto.

Come fare? Vi è mai capitato?

Ciao a tutti....