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:
In aggiornaBaseDati() gestisco l'errore di applicazione con il classico On Error Resume Next...altro 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 (blnErroreModulo) Then aggiornaBaseDati()
If (blnErroreApplicazione) Then impostaMarche()
Set objRs = Nothing
ChiudiConn()
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.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
Come fare? Vi è mai capitato?
Ciao a tutti....

Rispondi quotando