MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Tratamentos de erros - Nível de Projeto

    Compartilhe
    avatar
    thiagomcosta
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 120
    Registrado : 23/01/2017

    [Resolvido]Tratamentos de erros - Nível de Projeto

    Mensagem  thiagomcosta em Sex 14 Jul 2017, 18:52

    Olá!

    Existe uma maneira de tratar os erros para todo o projeto? Se sim, como?
    Ou tenho que definir isso dentro de cada SUB?

    Ou seja, tenho que ter "ON ERROR..." dentro de cada rotina ou existe uma maneira de fazer isso para todo o projeto?


    Última edição por thiagomcosta em Ter 18 Jul 2017, 12:49, editado 1 vez(es)

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: [Resolvido]Tratamentos de erros - Nível de Projeto

    Mensagem  Phillip_Junior em Sab 15 Jul 2017, 03:21

    Olá

    Você pode utilizar o evento ao ocorrer o erro do seu formulário, mas precisará especificar o número referente ao erro.

    Ou seguir a dica do link abaixo e criar uma tabela de erros.


    'No evento ao ocorrer o erro

    Private Sub Form_Error(DataErr As Integer, Response As Integer)
       Select Case DataErr
           Case 'numero referente ao erro
               MsgBox "msg personalizada do erro"
               Response = acDataErrContinue
           Case  'numero referente ao erro
               MsgBox "msg personalizada do erro"
               Response = acDataErrContinue
           Case  'numero referente ao erro
               MsgBox "msg personalizada do erro"
               Response = acDataErrContinue
               SSN.Value = SSN.OldValue
           Case  'numero referente ao erro
               MsgBox "msg personalizada do erro"
               Response = acDataErrContinue
           Case Else
               Response = acDataErrDisplay
       End Select
       ActiveControl.Undo
    End Sub



    Obs:

    Nesse link vc conseguirá encontrar uma lista referente a todos os erros nas versões 2010, 2007 e 2003.

    [Você precisa estar registrado e conectado para ver este link.]

    Se o link estiver quebrado, baixe o arquivo em anexo

    Abraços
    Anexos
    errornumberaccess2010-2003.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.2 Mb) Baixado 16 vez(es)


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    thiagomcosta
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 120
    Registrado : 23/01/2017

    Re: [Resolvido]Tratamentos de erros - Nível de Projeto

    Mensagem  thiagomcosta em Seg 17 Jul 2017, 16:46

    Mas eu tenho que fazer para cada formulário, código, macro, etc? Ou posso definir o tratamentos de eerro ao nível de projeto, fazendo isso apenas uma vez?

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: [Resolvido]Tratamentos de erros - Nível de Projeto

    Mensagem  Phillip_Junior em Seg 17 Jul 2017, 20:53

    Prepare o codigo acrescentando todos os códigos referenciado a cada tipo de erro, conforme lista em anexo ja enviada. Tipo, Mascaras, Datas, Duplicados etc. Depois do código pronto, insira ele no evento ao ocorrer o erro de cada formulario.

    assim nao ha necessidade de naquele formulario criar um retorno para cada controle que retornar o erro.



    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    thiagomcosta
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 120
    Registrado : 23/01/2017

    Re: [Resolvido]Tratamentos de erros - Nível de Projeto

    Mensagem  thiagomcosta em Ter 18 Jul 2017, 12:48

    Ja me poupa bastante trabalho.

    Obrigado pela resposta.

    Phillip_Junior
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 179
    Registrado : 09/12/2016

    Re: [Resolvido]Tratamentos de erros - Nível de Projeto

    Mensagem  Phillip_Junior em Ter 18 Jul 2017, 17:39

    obrigado pelo retorno.

    forum agradece

    abracos


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3325
    Registrado : 14/08/2013

    Re: [Resolvido]Tratamentos de erros - Nível de Projeto

    Mensagem  FabioPaes em Ter 18 Jul 2017, 18:40

    Olha, eu criei uma função com esse Código, e uso nos meus aplicativos:

    Código:

    Public Function TrataErroF()
    'Criado por Fabio Paes
    '09/07/2016
    Select Case Err.Number
        'Erros Ignorados 2501 e de cancelamento da ação pelo usuario
        Case 2501, 0
            Err.Number = 0
            Exit Function
        Case Else
        MsgBox "Nº Erro: " & Err.Number & " - " & Err.Description, vbInformation, "Um erro Ocorreu, Informe ao Aministrador"
    End Select
    End Function

    Agora nos Botões eu Chamo a função assim:



    Código:

    Private Sub Comando23_Click()
    On Error GoTo F
    'Fazer os comando do Botão aqui...


    'A partir daqui não colocar nenhum comando
    F:
    Call TrataErroF
    End Sub

    Dessa forma, sempre que ocorrer um erro, se nao for um dos erros ignorados, ele emite uma msgbox com o Numero do erro e a descrição... E nao habilita aquela opção de depurar, que da acesso ao Código do Aplicativo.
    Junte essa Dica com a Dica do Amigo a cima que ficará ótimo!
    Pode ate, chamar um formulário personalizado... e colocar nele o código da Mensagem e a Descrição...


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    thiagomcosta
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 120
    Registrado : 23/01/2017

    Re: [Resolvido]Tratamentos de erros - Nível de Projeto

    Mensagem  thiagomcosta em Qui 27 Jul 2017, 13:05

    Olá!

    Como o problema era a comunicação das mensagens de erros (o usuário ignorava os erros e continuava o processo) eu criei o código abaixo com o intuito principal de me comunicar os erros.
    Ele envia uma mensagem de email para mim informando o erro e o objeto ativo.

    Código:
    Sub EnviaInfosErro()
    Dim vMensagem As String
    Dim vMsgBox
    Dim vNetwork As Object
    Dim vEmailErro As CDO.Message
    Set vNetwork = CreateObject("WScript.Network")

    'Define mensagem de email
    vMensagem = "Erro:= " & Err.Number & Chr(13)
    vMensagem = vMensagem & "Descrição:= " & Err.Description & Chr(13)
    vMensagem = vMensagem & "Objeto ativo:= " & Application.CurrentObjectName & Chr(13)
    'If Application.CurrentObjectType = acForm Then
    '    vMensagem = vMensagem & "Controle:= " & Screen.ActiveControl.Name & Chr(13)
    '    vMensagem = vMensagem & "Controle Anterior:= " & Screen.PreviousControl.Name & Chr(13)
    '    vMensagem = vMensagem & "Formulario:= " & Screen.ActiveForm.Name & Chr(13)
    'End If
    vMensagem = vMensagem & "Usuário:= " & vNetwork.UserName & Chr(13)
    vMensagem = vMensagem & "Data/Hora:= " & Now

    'Define a mensagem de erro
    vMsgBox = "Erro " & Err.Number & Chr(13)
    vMsgBox = vMsgBox & Err.Description & Chr(13) & Chr(13)
    vMsgBox = vMsgBox & "Um email foi enviado à [Você precisa estar registrado e conectado para ver este link.] para auxiliar na correção do problema."

    'Enviar email
    'Habilitar referencia Microsoft CDO for Windows
    'Na janela VBA --> Ferramentas --> Referências --> Microsoft CDO for Windows
    Set vEmailErro = New CDO.Message
    With vEmailErro.Configuration
        .Fields(cdoSendUserName) = "endereco@email.com.br" 'Aqui vai o endereço de e-mail que será responsável pelo envio
        .Fields(cdoSendPassword) = "*****" 'Aqui vai a senha do e-mail
        .Fields(cdoSMTPAuthenticate) = cdoBasic
        .Fields(cdoSMTPServer) = "email.com.br" 'Nome do servidor SMTP
        .Fields(cdoSMTPConnectionTimeout) = 30 'Porta
        .Fields(cdoSMTPServerPort) = 587 'Porta
        .Fields(cdoSendUsingMethod) = cdoSendUsingPort
        .Fields.Update
    End With
           
    With vEmailErro
        .To = "thiago@ideesconvites.com.br"
        .From = "endereco@email.com.br" 'Endereço remetente (o mesmo da conexão q vc fez )
        .Subject = "Retorno de Erro"
        .TextBody = vMensagem
        .Send
    End With
       
    Set vNetwork = Nothing
    Set vEmailErro = Nothing
       
    'Mostra a mensagem de erro
    MsgBox vMsgBox, vbCritical, "Erro"

    End Sub

      Data/hora atual: Ter 19 Set 2017, 12:48