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


2 participantes

    [Resolvido]Tratamento de erro não funciona....

    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Tratamento de erro não funciona....

    Mensagem  MarceloSilva 9/4/2012, 17:50

    Boa Tarde

    Tenho uma dúvida

    Possuo uma macro de chamada de um formulario usando o codigo da tabela.
    Ex: ID_Treinamento que está aparecendo no form frmColaborador quando clicado (hiperlick) abre o form Treinamento.

    estou usando o evento "ao Clicar" do código ele executa a seguite chamada com tratamento de erro:

    Private Sub ID_Treinamento_Click()
    Dim X As Integer
    On Error GoTo TrataErro
    DoCmd.RunMacro "mcr_BuscaTreinamento"
    Exit Sub
    TrataErro:
    If err.Number = 3075 Then
    DoCmd.ClearMacroError
    End If
    MsgBox "Você não pode chamar um Treinamento sem uma identidade (Código) atrelado a Competência !", vbQuestion, "Erro de Chamada"
    DoCmd.Close acForm, "frm_Treinamento"
    End Sub



    Minha dúvida:

    Mesmo com tratamento de erro, abre a tela Passo a Passo pedindo para parar a macro.
    Por que isso acontece? mesmo com o tratamento do erro?

    como fazer para não aparecer tal tela?
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  le_lo28 9/4/2012, 19:08

    Fala ae blz?

    Converta a macro para módulo! No Office 2007 basta fazer o seguinte:


    No Painel de Navegação, clique no nome da macro que você deseja converter.
    Na guia Ferramentas de Banco de Dados, no grupo Macro, clique em Converter Macros em Visual Basic.
    Na caixa de diálogo Converter Macro, selecione as opções desejadas e clique em Converter.

    Observe que será criado um módulo com a macro convertida.

    Coloque o tratamento de erro e chame o procedimento do módulo no seu evento.

    Boa sorte,


    .................................................................................
    [Resolvido]Tratamento de erro não funciona.... Assinaturacross
    M@rcelo
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  MarceloSilva 9/4/2012, 19:56

    Já Fiz esse procedimento
    Porem não funcionou o recurso...

    Não sei porque.
    Em macro funciona, abre o form
    em VBA não. clico no código mas não chama o form


    Por isso resolvi efetuar a chamada da macro no vba.
    Veja abaixo a macro convertida.......

    Option Compare Database

    '------------------------------------------------------------
    ' mcr_BuscaTreinamento
    '
    '------------------------------------------------------------
    Function mcr_BuscaTreinamento()
    On Error GoTo mcr_BuscaTreinamento_Err

    With CodeContextObject
    Call Playsound("C:\Mtz_Arauco\Sistema\Som\01.wav")
    On Error Resume Next
    If (.Form.Dirty) Then
    DoCmd.RunCommand acCmdSaveRecord
    End If
    If (.MacroError.Number <> 0) Then
    Beep
    MsgBox .MacroError.Description, vbOKOnly, ""
    Exit Function
    End If
    On Error GoTo 0
    DoCmd.OpenForm "frm_Treinamento", acNormal, "", "[ID_Treinamento]=" & Nz(.ID_Treinamento, 0), acEdit, acNormal
    If (Not IsNull(.ID_Treinamento)) Then
    TempVars.Add "ID_TreinamentoAtual", .ID_Treinamento
    End If
    If (IsNull(.ID_Treinamento)) Then
    TempVars.Add "ID_TreinamentoAtual", Nz(DMax("ID_Treinamento]", .Form.RecordSource), 0)
    End If
    DoCmd.SearchForRecord , "", acFirst, "[ID_Treinamento]=" & TempVars!ID_TreinamentoAtual
    TempVars.Remove "ID_TreinamentoAtual"
    End With


    mcr_BuscaTreinamento_Exit:
    Exit Function

    mcr_BuscaTreinamento_Err:
    MsgBox Error$
    Resume mcr_BuscaTreinamento_Exit

    End Function
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  le_lo28 9/4/2012, 20:14

    Ok. Faça o seguinte, coloque o código abaixo no botão:

    Código:

    Private Sub ID_Treinamento_Click()
    On Error GoTo TrataErro

    Call Playsound("C:\Mtz_Arauco\Sistema\Som\01.wav")

    If (Me.Form.Dirty) Then
    DoCmd.RunCommand acCmdSaveRecord
    End If

    DoCmd.OpenForm "frm_Treinamento", acNormal, "", "[ID_Treinamento]=" & Nz(Me.ID_Treinamento, 0), acEdit, acNormal
    If (Not IsNull(me.ID_Treinamento)) Then
    TempVars.Add "ID_TreinamentoAtual", Me.ID_Treinamento
    End If
    If (IsNull(Me.ID_Treinamento)) Then
    TempVars.Add "ID_TreinamentoAtual", Nz(DMax("ID_Treinamento]", Me.Form.RecordSource), 0)
    End If
    DoCmd.SearchForRecord , "", acFirst, "[ID_Treinamento]=" & TempVars!ID_TreinamentoAtual
    TempVars.Remove "ID_TreinamentoAtual"

    On Error GoTo 0


    TrataErro:
    If err.Number = 3075 Then
    Err.Clear
    else
    MsgBox "Você não pode chamar um Treinamento sem uma identidade (Código) atrelado a Competência !", vbQuestion, "Erro de Chamada"
    DoCmd.Close acForm, "frm_Treinamento"
    end if

    Faça um teste ai!


    .................................................................................
    [Resolvido]Tratamento de erro não funciona.... Assinaturacross
    M@rcelo
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  MarceloSilva 9/4/2012, 20:37

    Ta quase Lá....rssss

    A função agora abre o form porem esta invertido. ex......

    quando tem o codigo do treinamento (ou seja, treinamento existente)está abrindo o msgbox do erro
    quando o campo é nulo, ou seja, não tem o respectivo treinamento, abre o form sem o msgbox do erro. porem como não tem o respectivo "ID_Treinamento", o form apresenta em branco - nessa condição que deveria apresentar o erro (msgBox)

    Tá quase lá....só está invertido a função....
    não consegui alterá-lo
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  le_lo28 9/4/2012, 21:11

    Entendi, mais ou menos!

    O forms "frm_Treinamento" dever ser aberto quando o ID não for nulo? Se for nulo deve impedir a abertura do forms e dar a mensagem?

    O que faz TempVars.Add ?

    Se for o caso poste um bd só com o formulario e tbl envolvido.

    Falow,


    .................................................................................
    [Resolvido]Tratamento de erro não funciona.... Assinaturacross
    M@rcelo
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  MarceloSilva 9/4/2012, 21:30

    Isso Mesmo......

    veja anexo o bd já com seu código....
    Existe uma linha com cód. Nulo......teste e verá o problema.

    at.
    Anexos
    [Resolvido]Tratamento de erro não funciona.... Attachmentteste.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (596 Kb) Baixado 17 vez(es)
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  le_lo28 9/4/2012, 21:53

    Então a sequência é está:

    Código:

    Call Playsound("C:\Mtz_Arauco\Sistema\Som\01.wav")

    If (Me.Form.Dirty) Then
    DoCmd.RunCommand acCmdSaveRecord
    End If

    If Not IsNull(Me.ID_Treinamento) Then

    DoCmd.OpenForm "frm_Treinamento", acNormal, "", "[ID_Treinamento]=" & Nz(Me.ID_Treinamento, 0), acEdit, acNormal

    Else
    MsgBox "Você não pode chamar um Treinamento sem uma identidade (Código) atrelado a Competência !", vbQuestion, "Erro de Chamada"
        Exit Sub
        End If
         


    TrataErro:
    Select Case err.Number

    Case 0
    err.Clear

    Case Else
    MsgBox "Ocorreu um erro: " & err.Number & " - " & err.Description, vbCritical, "Atenção"
    End Select

    Agora coloque os demais código que vc precisa dentro da condição IF.

    OBS. Não use TempVars para salvar valores de campos, ele não serve para está utilidade! Inclusive da erro!
    Trabalhe com variáveis tipo Dim

    Na esperança que ajude.


    .................................................................................
    [Resolvido]Tratamento de erro não funciona.... Assinaturacross
    M@rcelo
    MarceloSilva
    MarceloSilva
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 156
    Registrado : 28/02/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  MarceloSilva 10/4/2012, 19:49

    Deu Certo amigo....

    brigaduuuuuu
    le_lo28
    le_lo28
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 233
    Registrado : 13/07/2011

    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  le_lo28 10/4/2012, 20:08

    Ótimo!!

    O fórum agradece o retorno cheers

    Até a próxima!


    .................................................................................
    [Resolvido]Tratamento de erro não funciona.... Assinaturacross
    M@rcelo

    Conteúdo patrocinado


    [Resolvido]Tratamento de erro não funciona.... Empty Re: [Resolvido]Tratamento de erro não funciona....

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 28/4/2024, 10:10