Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [VB6] gestione On error

    Ciao A tutti .
    Nel mio programma ho due routine una A e una B.
    A chiama B.
    nella mia routine B ho un codice con una gestione degli errori per esempio se vado a scrivere un record che e' gia' inserito nel database gestisco l'errore. e vado avanti

    Cosa succede pero' dopo che e' entrato nella gestione degli errori una volta (o forse anche piu' di una)
    che esce fuori dalla routine senza che nessuno glielo dicesse utilizzando la gestione degli errori che sta nella soubritine A.Cappero non e' la prima volta che mi succede .Cosa devo fare?

    Ciao Luca

  2. #2

    esempio

    Ho cercato di ricostruire con questo codice quello che fanno le due routine..
    ps quando dicevo " che esce fuori dalla routine senza che nessuno glielo dicesse utilizzando la
    gestione degli errori che sta nella soubritine A." intendevo non che usciva dalla gestione degli errori di b ma proprio dalla soubrotine b ..Grazie ciao Luca

    Private Sub A()
    On Error Resume Next

    call b
    call c
    End Sub

    Private Sub b()
    On Error GoTo errore1
    qua: rs.addnew
    Rs.Fields("OPZIONE_PLUS").Value= 1
    rs.update
    rs.addnew
    Rs.Fields("OPZIONE_PLUS").Value = 2
    rs.update

    Exit Sub
    errore1:
    Select Case Err.Number
    Case 3022:
    GoTo qua
    Case 3078:Resume qua
    Case Else:
    Resume Next
    End Select
    End Sub

  3. #3
    è normale che l'esecuzione esca dalla routine B.
    se hai necessità di eseguire una parte di codice della routine B fino a che non vada a buon fine devi utilizzare le Etichette e la parolina magica
    GoTo nome etichetta

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  4. #4

    risposta

    mi spiego...provate a fare girare questo piccolo programma ha 2 text e un bottone...la prima volta lo gestisce l'errore della funzione calcola. La seconda no....come posso fare a fargli gestire continuamente l'errore?(ps e' ovvio che questo esempio non serve a niente e il programma andra in loop infinito se gestisce l'errore continuamente....ma e' solo un esempio..spero di essermi spiegato.ciao Luca

    Esempio
    ----------------------------------------------------

    Private Sub Command1_Click()
    calcola
    End Sub
    Private Sub calcola()
    On Error GoTo errore1

    qua: Text1 = 1 + 1
    Text2 = 0 / 0
    Exit Sub
    errore1:
    GoTo qua

    End Sub
    ------------------------------------------------------

  5. #5
    se posso darti un consiglio, in questi casi io preferisco utilizzare delle Function che abbiano come valore di ritorno un boolean. in questo modo posso ciclare la funzione fino che la condizione non è soddisfatta.
    e il codice è pure più pulito a parer mio
    quindi farei una cosa così:
    codice:
    Private Sub Command1_Click()
    On Error GoTo Errore
        Dim bRis As Boolean
        bRis = False
        Do Until bRis
            bRis = fCalcola
        Loop
        Exit Sub
    Errore:
        MsgBox Err.Number & ": " & Err.Description
    End Sub
    
    Private Function fCalcola() As Boolean
    On Error GoTo Errore
        Text1 = 1 + 1
        Text2 = 0 / 0
        fCalcola = True
        Exit Function
    Errore:
        'MsgBox Err.Number & ": " & Err.Description
        fCalcola = False
    End Function
    anche se ancora non ho capito qual è il tuo scopo visto che in questo caso si genera un loop infinito.

    ps.
    ricordati di usare il tag per scrivere il codice, lo hanno messo apposta perchè rende il tutto più leggibile

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Non

    Goto qua

    ma

    Resume qua

  7. #7
    Originariamente inviato da oregon
    Non

    Goto qua

    ma

    Resume qua
    esatto.
    chiedo scusa a luca per la disattenzione, mi spiace

    05.08.2005 - by alka
    Auguri all'angelo custode dei moderatori.

  8. #8
    era proprio una stupidata ! grazie Luca

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.