Oppure

Loading
30/07/09 7:10
symonx80
Ciao,
ho un problema con la gestione degli errori in vb6.
Ho il seguente codice

Public Sub ....
.......
..........
For Each elemento In collection

            'On Error GoTo ERRORE_SALVATAGGIO_ELEM

                With recordSetElementi

                    .AddNew
                    
                    .Fields("CAMPO1") = elemento.campo1
                    .Fields("CAMPO2") = elemento.campo2
                   	......
			........
        
                End With
NUOVO_ELEM:
            Next 'Elemento successivo della collection
        End If
    End If
    
    recordSetElementi.update
    recordSetElementi.Close
    
    Exit Sub


ERRORE_SALVATAGGIO_ELEM:
    MsgBox "Errore salvataggio di un elemento"
    Resume NUOVO_ELEM
    
End Sub



Scorrendo la mia collection devo salvare in un recordset ciascun elemento, ma vorrei che se un elemento generasse errore fosse possibile riprendere la mia routine dall'elemento successivo, tramite la gestione di ERRORE_SALVATAGGIO_ELEM che dovrebbe riprendere l'esecuzione della routine dalla riga di codice che sposta il ciclo For all'elemento successivo, e non interrompere bruscamente l'esecuzione di essa.
Ho provato anche inserendo nel Resume il numero di riga ma non ha avuto successo ugualmente, viene sempre generato un errore come se si perdesse il rifermento alla collection che si sta scorrendo.
Dove sto sbagliando?
Ultima modifica effettuata da symonx80 30/07/09 7:10
aaa
30/07/09 7:35
theprogrammer
Inserisci prima della for una

On Error Resume Next

e togli tutto il resto
aaa
30/07/09 9:04
symonx80
D'accordo così prosegue il ciclo correttamente ma come faccio a intercettare l'errore per capire quale elemento è stato a generarlo?
aaa
30/07/09 9:08
theprogrammer
Puoi fare una If Err .. per ogni linea che vuoi controllare, oppure utilizzi la

On Error Goto

e la

Resume Next
aaa
30/07/09 9:34
symonx80
Ho inserito

On Error Goto GESTISCI

e

GESTISCI:
MsgBox "Errore per " & elemento.campo1
Resume Next

Mi segnala correttamente l'errore mostrandomi il campo1

ma come chiudo la finestra della msgBox mi va in errore

error runtime 91: object variable or with block variable not set

Come mai?
aaa
30/07/09 9:37
theprogrammer
Scusa, ma in quale linea si e' verificato l'errore?
aaa
30/07/09 9:41
symonx80
Si verifica sulla riga della msgBox
aaa
30/07/09 9:51
GrG
Magari usa pure un err.Description per farti dare la descrizione dell'errore... se non restituisce nulla significa che l'errore non c'è stato
aaa