Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    gestione errori in un ciclo

    sto scorrendo un recordset all'interno del quale faccio diverse insert

    le insert sono "raccolte" in una transazione

    gli inserimenti debbono quindi essere fatti o tutti insieme o nessuno(in caso di errore)

    quindi apro la transazione e alla fine faccio il commit

    in caso di errore rolback

    ma se va in errore il controllo passa all'etichetta specificata dall'istruzione on error goto etichetta
    uscendo cosi dal ciclo

    io devo far in modo che in caso di errore lui faccia il rollback di tutte le insert ma non esca dal ciclo, come fare? spero di essermi spiegato

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    devi fare On Error Resume Next e dopo ogni instruzione che puo' generare errore fare il controllo sull'errore.
    Ans.

  3. #3
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    gia ho fatto cosi, pensavo c'era un modo piu rapido, grazie

  4. #4
    ma se non hai ancora committato che prob c'è

    dichiari una var booleana

    codice:
    private sub....
    on error goto Err
    dim bTrans as boolean
       cn.begintrans: bTrans = true
       do
       ...
       loop
       cn.committrans: btrans=false
    exit sub
    Err:
       if btrans then cn.rollback
    end sub
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  5. #5
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    mettiamo che il ciclo scorre 100 record, se una delle insert va in errore al 30 record deve fare il rolback non di tutto ma solo di tutte le insert contenute nel ciclio(alla 30esima iterazione)mentre le precedenti sono state consolidate dai precendenti commit
    nel momento in cui il controllo passa nella sezione dedicata agli errori esce dal ciclo e non rientra piu, mi chiedevo se esiste un modo per farlo tornare nel ciclo alla(31esima iterazione)dopo essere passato nella sezione errori???

  6. #6
    e fare così allora

    codice:
    on error resume next
       do
          err.clear
          cn.begintrans
          ....
          if err.number <> 0 then
              cn.rollbacktrans
          else
              cn.committrans
          end if
       loop
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  7. #7
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    si infatti cosi ho fatto,

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.