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]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access.

    avatar
    Thel
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 114
    Registrado : 18/06/2012

    [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access. Empty [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access.

    Mensagem  Thel 26/8/2018, 09:18

    Minha gente, olha eu de novo?
    Não se preocupem não que logo logo eu vou parar de abusar vocês! rsrsrsrs

    É porque estou quase terminando um programinha que fiz para cadastro, consulta e emissão de notas de orçamento. Ainda faltam pequenos ajustes.

    PRIMEIRO AJUSTE:
    PRECISO DE UM CÓDIGO VBA PARA O BOTÃO 'SALVAR', PARA FAZER O SEGUINTE:
    => Salvar a nota de orçamento, se detectar que há um novo registro;
    => Salvar a nota de orçamento, se detectar que houve uma alteração no registro;
    => Não salvar o registro, e exibir uma mensagem de erro, se detectar que o campo "ServPlaca" ou "ServProprietário" não foi preenchido;
    => Não salvar, e exibir uma mensagem de erro, se detectar que não há um registro novo em edição.

    A tabela que alimenta esse formulário é a TabNotaOrcam.

    O código que criei e que não está funcionando 100% é este:

    Private Sub BotaoSalvarFormNotaOrcam_Click()
    If IsNull([ServPlaca]) And IsNull([ServProprietario]) Then
    DoCmd.Beep
    MsgBox "DIGITE PELO MENOS O NÚMERO DA PLACA OU O NOME DO PROPRIETÁRIO ANTES DE
    SALVAR ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE ERRO

    Else
    If IsNull([ServCod]) Then
    DoCmd.Beep
    MsgBox "DIGITE PELO MENOS O NÚMERO DA PLACA OU O NOME DO PROPRIETÁRIO ANTES DE
    SALVAR ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE ERRO

    Else
    If Me.NewRecord And IsNull([ServPlaca]) And IsNull([ServProprietario]) Then
    DoCmd.Beep
    MsgBox "DIGITE PELO MENOS O NÚMERO DA PLACA OU O NOME DO PROPRIETÁRIO ANTES DE
    SALVAR ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE ERRO

    Else
    If (Me.Dirty = True) Then
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 'SALVA O REGISTRO
    MsgBox "NOTA DE ORÇAMENTO SALVA COM SUCESSO!", vbInformation, "AVISO" 'EXIBE A
    MENSAGEM DE REGISTRO SALVO

    Else
    If (Me.Dirty = False) Then
    MsgBox "VOCÊ JÁ SALVOU ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE
    ERRO

    Else
    End If
    End If
    End If
    End If
    End If
    End Sub

    Obs.:
    No caso desse código, ele funciona "quase" bem. O problema é que quando você salva e em seguida faz uma alteração nova em um campo, ele diz que não tem nada a ser salvo, informando que eu já salvei.

    ===============================================================

    SEGUNDO AJUSTE:
    PRECISO DE UM CÓDIGO VBA PARA:
    Cancelar, temporariamente,  a mensagem de erro padrão do MS Access, a famigerada "O valor que você inseriu não é válido para este campo". Para que eu possa colocar uma mensagem de erro personalizada por mim, caso o usuário tente digitar alguma coisa que não seja compatível com o formato "moeda".
    O campo que quero fazer isso é o campo "ServValorTaxa1", formato "MOEDA".




    Abraços e desculpem o abuso.
    avatar
    Thel
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 114
    Registrado : 18/06/2012

    [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access. Empty Re: [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access.

    Mensagem  Thel 26/8/2018, 12:34

    Já fiz o ajuste para o:
    PRECISO DE UM CÓDIGO VBA PARA O BOTÃO 'SALVAR', PARA FAZER O SEGUINTE:
    => Salvar a nota de orçamento, se detectar que há um novo registro;
    => Salvar a nota de orçamento, se detectar que houve uma alteração no registro;
    => Não salvar o registro, e exibir uma mensagem de erro, se detectar que o campo "ServPlaca" ou "ServProprietário" não foi preenchido;
    => Não salvar, e exibir uma mensagem de erro, se detectar que não há um registro novo em edição.

    O código ficou assim:
    Private Sub BotaoSalvarFormNotaOrcam_Click()
    If IsNull([ServPlaca]) And IsNull([ServProprietario]) And Me.NewRecord Then
    DoCmd.Beep
    MsgBox "DIGITE PELO MENOS O NÚMERO DA PLACA OU O NOME DO PROPRIETÁRIO ANTES DE SALVAR ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE ERRO
    Else
    If (Me.Dirty = True) Then
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 'SALVA O REGISTRO
    MsgBox "NOTA DE ORÇAMENTO SALVA COM SUCESSO!", vbInformation, "AVISO" 'EXIBE A MENSAGEM DE REGISTRO SALVO
    Else
    If (Me.Dirty = False) And Not Me.NewRecord Then
    MsgBox "VOCÊ JÁ SALVOU ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE ERRO
    Else
    End If
    End If
    End If
    End Sub


    Funciona em todos os campos de texto ou combobox que forem alterados os dados ou adicionados, exceto nos campos "ServCor" e "ServMarcaModelo".
    Não consegui descobrir o motivo: já coloquei o requery (ServCor.requery) no evento Ao Entrar, já comparei a propriedade das tabelas e dos campos do formulários entre os campos que estão funcionando e os que não estão, e o código do evento Após Atualizar está exatamente igual ao dos campos que estão salvando corretamente:

    Private Sub ServCor_AfterUpdate()
    Dim KeyAscii
    Dim rs As Object
    Dim sql As String
    Set rs = Me.Recordset.Clone
    rs.FindFirst "ServCor = '" & (Me![ServCor]) & "'"
       
    If rs.NoMatch Then
    DoCmd.SetWarnings False
    sql = "INSERT INTO TabCor (Cor) VALUES ('" & Me.ServCor & "')"
    DoCmd.RunSQL sql
    DoCmd.SetWarnings True
    End If
    End Sub

    Não faço a mínima ideia do que está acontecendo, os códigos compilam sem erros.
    avatar
    Thel
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 114
    Registrado : 18/06/2012

    [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access. Empty Re: [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access.

    Mensagem  Thel 26/8/2018, 23:10

    Ainda não consegui resolver, já tentei várias formas.

    O jeito é implementar uma rotina de erro dentro do código para saber o que está acontecendo.

    Alguém aí saberia como ficaria uma rotina de erro dentro deste código:

    Private Sub BotaoSalvarFormNotaOrcam_Click()
    If IsNull([ServPlaca]) And IsNull([ServProprietario]) Then
    DoCmd.Beep
    MsgBox "DIGITE PELO MENOS O NÚMERO DA PLACA OU O NOME DO PROPRIETÁRIO ANTES DE
    SALVAR ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE ERRO
    Else
    If Me.Dirty = True Then
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 'SALVA O
    REGISTRO
    MsgBox "NOTA DE ORÇAMENTO SALVA COM SUCESSO!", vbInformation, "AVISO" 'EXIBE A
    MENSAGEM DE REGISTRO SALVO

    Else
    If Me.Dirty = False Then
    MsgBox "VOCÊ JÁ SALVOU ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE
    ERRO
    Else
    End If
    End If
    End If
    End Sub

    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8449
    Registrado : 05/11/2009

    [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access. Empty Re: [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access.

    Mensagem  Alexandre Neves 27/8/2018, 12:30

    Boa tarde,
    Com rotina de erro
    Private Sub BotaoSalvarFormNotaOrcam_Click()
    On error goto mostraerro
    If IsNull([ServPlaca]) And IsNull([ServProprietario]) Then
    DoCmd.Beep
    MsgBox "DIGITE PELO MENOS O NÚMERO DA PLACA OU O NOME DO PROPRIETÁRIO ANTES DE
    SALVAR ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE ERRO
    Else
    If Me.Dirty = True Then
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 'SALVA O
    REGISTRO
    MsgBox "NOTA DE ORÇAMENTO SALVA COM SUCESSO!", vbInformation, "AVISO" 'EXIBE A
    MENSAGEM DE REGISTRO SALVO

    Else
    If Me.Dirty = False Then
    MsgBox "VOCÊ JÁ SALVOU ESTA NOTA DE ORÇAMENTO.", vbCritical, "ERRO" 'EXIBE MENSAGEM DE
    ERRO
    Else
    End If
    End If
    End If
    exit sub
    MostraErro:
    msgbox err.number & vbcr & err.description
    err.raise
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    avatar
    Thel
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 114
    Registrado : 18/06/2012

    [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access. Empty Re: [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access.

    Mensagem  Thel 27/8/2018, 19:25

    Olá Alexandre, obrigado pela tua atenção!

    Eu desisti, porque mudei totalmente a programação do botão salvar para um código bem mais simples e funcional.

    Vou colocar este tópico como "resolvido".
    avatar
    Thel
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 114
    Registrado : 18/06/2012

    [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access. Empty Re: [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access.

    Mensagem  Thel 27/8/2018, 20:55

    Tópico resolvido.

    Conteúdo patrocinado


    [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access. Empty Re: [Resolvido]Código VBA para botão 'SALVAR' e para desativar mensagem padrão de erro do MS Access.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 07:21