TRATAMENTO DE ERRO
Pessoal Boa Tarte...
Preciso de uma ajudinha.
monte um processo na empresa em que trabalho, este processo consiste em validar informaçoes e faço conexão com três tipos de servidores MySQL, SyBase IQ, SyBase Ase.
Pode acontecer de algum servidor estar fora do ar, caso isso ocorra eu tenho q gravar no banco que não foi possivel consulta pq o servidor estava fora do ar...
Para isso estou usando no topo do Bloco On Error Resume Next e no rodape eu verifico se existe erro.
mais eu não sei qual o numero do erro de Impossivel conctar com o banco....alguem sabe????
Quem pode me ajudar...
Att,
Marcelo Bressan
Preciso de uma ajudinha.
monte um processo na empresa em que trabalho, este processo consiste em validar informaçoes e faço conexão com três tipos de servidores MySQL, SyBase IQ, SyBase Ase.
Pode acontecer de algum servidor estar fora do ar, caso isso ocorra eu tenho q gravar no banco que não foi possivel consulta pq o servidor estava fora do ar...
Para isso estou usando no topo do Bloco On Error Resume Next e no rodape eu verifico se existe erro.
mais eu não sei qual o numero do erro de Impossivel conctar com o banco....alguem sabe????
Quem pode me ajudar...
Att,
Marcelo Bressan
O correto é utilizar o bloco de tratamento ON ERROR GOTO <rotulo>.
Exemplo:
Exemplo:
On Error GoTo erro
.
.
.
Exit Sub
erro:
MsgBox [Ô]Número do erro: [Ô] & err.Number
eu preciso gravar o erro de conxão ou servidor indisponivel no banco de dados...e esta forma ele somente gera uma mensagem...
entendeu?
entendeu?
Dá uma olhada na rotina completa.
Se preferir, pode gravar o LOG em um arquivo de texto.
On Error GoTo erro
.
.
.
Exit Sub
erro:
[ô]Gravar NUMERO e DESCRICAO do ERRO no banco
con.Execute [Ô]INSERT INTO logerro(num, desc) VALUES ([Ô] & Err.Number & [Ô], [ô][Ô] & Err.Description & [Ô][ô]);[Ô]
Se preferir, pode gravar o LOG em um arquivo de texto.
Além disso, é interessante utilizar o método Err.Source para armazenar o nome do OBJETO que retornou o erro para o BLOCO.
entaum tecla....o problema que o Goto Erro ele para ai o processo e o meu tem que continuar processando...imagina q é uma lista e varios processos...
entendeu:
entendeu:
Após o tratamento de um
Resume Next
Assim ele vai continuar de onde deu o erro
Resume Next
Assim ele vai continuar de onde deu o erro
Citação:BRESSAN escreveu:
entaum tecla....o problema que o Goto Erro ele para ai o processo e o meu tem que continuar processando...imagina q é uma lista e varios processos...
entendeu:
Fiz um bloco de tratamento usando a instrução GOTO.
Option Explicit
Private Sub Command1_Click()
On Error GoTo erro
Dim i As Byte
[ô]<Processo 1>
i = 1
GoTo ProUm
[ô]<Processo 2>
i = 2
GoTo ProDois
[ô]<Processo 3>
i = 3
GoTo ProTres
Exit Sub
erro:
[ô]Gravar erro em banco de LOG
con.Execute [Ô]INSERT INTO log (num, desc) [Ô] & _
[Ô]VALUES ([Ô] & Err.Number & [Ô], [ô][Ô] & Err.Description & [Ô][ô]);[Ô]
Err.Clear
[ô]<Continuar a executar os outros processos de onde foi interrompido>
Select Case i
Case 1
GoTo ProDois
Case 2
GoTo ProTres
Case Else
Exit Sub
End Select
End Sub
Creio que resolva.
entendi...isso funciona....
Mais tecla como disse no inicio vc sabe qual o numero do erro quando não conseguimos efetuar uma conexão?
este é o mais importante.
Att,
Marcelo Bressan
Mais tecla como disse no inicio vc sabe qual o numero do erro quando não conseguimos efetuar uma conexão?
este é o mais importante.
Att,
Marcelo Bressan
Pra saber o código do erro vc pode tirar a rotina pra tratar o erro e fazer ele dar o erro, por exemplo, se o banco esta em outro computador é só vc tirar o cabo de rede e executar o sistema, a hora q ele tentar a brir o banco e não der certo vai aparecer a mensagem com o numero do erro e parar a execução, ai vc pega o numero q apareceu na mensagem e faz a rotina pra tratar ele certinho.
Citação:BRESSAN escreveu:
entendi...isso funciona....
Mais tecla como disse no inicio vc sabe qual o numero do erro quando não conseguimos efetuar uma conexão?
este é o mais importante.
Att,
Marcelo Bressan
Porque saber o número, se a própria rotina irá ARMAZENAR o NÚMERO e a DESCRIÇÃO do erro no LOG?
Me refiro a este trecho da rotina:
[txt-color=#088A08][ô]Gravar erro em banco de LOG[/txt-color]
con.Execute [Ô]INSERT INTO log (num, desc) [Ô] & _
[Ô]VALUES ([Ô] & Err.Number & [Ô], [ô][Ô] & Err.Description & [Ô][ô]);[Ô]
Depois é só olhar o NÚMERO no arquivo.
Tópico encerrado , respostas não são mais permitidas