|
Postada em 10/07/2005 21:35 hs
Boa-noite, uso MSDE, minhas transações de dados tem o controle de transação tipo assim:
SQL="UPDATE blablaba" conn.bengintrans conn.execute SQL conn.commitrans
O problema é: Quando ocorre um erro nessa transação, como seria o tratamento de erro, para dar o Rollbacktrans?
Seria assim:
On error goto ErroTrans
SQL="UPDATE blablaba" conn.bengintrans conn.execute SQL conn.commitrans
ErroTrans: conn.Rollbacktrans
Mas assim ele dar um erro dizendo que não há conexões ativas, como faço o tratamento corretamente? Obrigado.
|
|
|
|
Sandro
não registrado
|
|
ENUNCIADA !
|
|
|
Postada em 10/07/2005 22:09 hs
Olá, Eu uso um método muito simples para resolver isso, crio uma variável boolean e faço o teste na rotina de tratamento de erros: Private Sub Atualiza() On Error Goto TrataErro Dim Trans as Boolean Dim SQL as String Sql = "Update ....." Conn.BeginTrans Trans = True Conn.Execute Sql Conn.CommitTrans Trans = False Exit Sub TrataErro: If Trans Then Conn.RollbBacktrans End If Msgbox "Erro " & err.Number & Chr$(13) & Chr$(10) & Err.Description,16,"Atenção" End Sub Quando eu abro uma transação, eu coloco a variável em True, executo o comando e tento concluir a transação. Se ocorrer um erro, o fluxo da rotina é desviado para a subrotina TrataErro, lá eu verifico se a variável é True, se for, Rollbacktrans nela. um abraço, Sandro.
|
|
|
|