MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


3 participantes

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

    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  thiagomcosta 14/7/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 18/7/2017, 12:49, editado 1 vez(es)
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Phillip_Junior 15/7/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.

    https://www.maximoaccess.com/t3083-todos-os-erros-do-ms-access-2007

    Se o link estiver quebrado, baixe o arquivo em anexo

    Abraços
    Anexos
    [Resolvido]Tratamentos de erros - Nível de Projeto Attachmenterrornumberaccess2010-2003.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.2 Mb) Baixado 20 vez(es)


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  thiagomcosta 17/7/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?
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Phillip_Junior 17/7/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
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  thiagomcosta 18/7/2017, 12:48

    Ja me poupa bastante trabalho.

    Obrigado pela resposta.
    avatar
    Phillip_Junior
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  Phillip_Junior 18/7/2017, 17:39

    obrigado pelo retorno.

    forum agradece

    abracos


    .................................................................................
    Phillip_Junior
    Analista de Sistemas
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  FabioPaes 18/7/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!
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  thiagomcosta 27/7/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 à thiago@ideesconvites.com.br 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

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 01:48