Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Gestione degli errori - Resume <line>
Forum - Visual Basic 6 - Gestione degli errori - Resume <line>

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
symonx80 (Normal User)
Pro


Messaggi: 107
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 9:10
Giovedė, 30/07/2009
Ciao,
ho un problema con la gestione degli errori in vb6.
Ho il seguente codice

Codice sorgente - presumibilmente VB.NET

  1. Public Sub ....
  2. .......
  3. ..........
  4. For Each elemento In collection
  5.  
  6.             'On Error GoTo ERRORE_SALVATAGGIO_ELEM
  7.  
  8.                 With recordSetElementi
  9.  
  10.                     .AddNew
  11.                    
  12.                     .Fields("CAMPO1") = elemento.campo1
  13.                     .Fields("CAMPO2") = elemento.campo2
  14.                         ......
  15.                         ........
  16.        
  17.                 End With
  18. NUOVO_ELEM:
  19.             Next 'Elemento successivo della collection
  20.         End If
  21.     End If
  22.    
  23.     recordSetElementi.update
  24.     recordSetElementi.Close
  25.    
  26.     Exit Sub
  27.  
  28.  
  29. ERRORE_SALVATAGGIO_ELEM:
  30.     MsgBox "Errore salvataggio di un elemento"
  31.     Resume NUOVO_ELEM
  32.    
  33. 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 il 30/07/2009 alle 9:10
PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 9:35
Giovedė, 30/07/2009
Inserisci prima della for una

On Error Resume Next

e togli tutto il resto

PM Quote
Avatar
symonx80 (Normal User)
Pro


Messaggi: 107
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 11:04
Giovedė, 30/07/2009
D'accordo cosė prosegue il ciclo correttamente ma come faccio a intercettare l'errore per capire quale elemento č stato a generarlo?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:08
Giovedė, 30/07/2009
Puoi fare una If Err .. per ogni linea che vuoi controllare, oppure utilizzi la

On Error Goto

e la

Resume Next

PM Quote
Avatar
symonx80 (Normal User)
Pro


Messaggi: 107
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 11:34
Giovedė, 30/07/2009
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?

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:37
Giovedė, 30/07/2009
Scusa, ma in quale linea si e' verificato l'errore?

PM Quote
Avatar
symonx80 (Normal User)
Pro


Messaggi: 107
Iscritto: 30/07/2009

Segnala al moderatore
Postato alle 11:41
Giovedė, 30/07/2009
Si verifica sulla riga della msgBox

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 11:51
Giovedė, 30/07/2009
Magari usa pure un err.Description per farti dare la descrizione dell'errore... se non restituisce nulla significa che l'errore non c'č stato

PM Quote
Avatar
theprogrammer (Normal User)
Guru^2


Messaggi: 2509
Iscritto: 28/01/2009

Segnala al moderatore
Postato alle 11:57
Giovedė, 30/07/2009
Testo quotato

Postato originariamente da symonx80:

Si verifica sulla riga della msgBox



No ... se la msgbox la vedi, che senso ha quello che dici?

Si verifica nella riga a cui ti riporta la resume next ...

Qui il problema e' un altro ... se l'errore che si verifica e' di tipo grave, non puoi fare il resume ma devi interrompere il codice ...

Togli la On Error (temporaneamente) e dicci dove si verifica l'errore ...

PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo