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]Função antes de atualizar - BeforeUpdate

    Compartilhe

    tonin
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 23/11/2016

    [Resolvido]Função antes de atualizar - BeforeUpdate

    Mensagem  tonin em 19/5/2017, 17:23

    Preciso de ajuda com esta função que não consigo fazer funcionar alguém poderia me ajudar ou estou colocando no lugar errado ou faltando mais informação.


    Private Sub BO_CBMS_BeforeUpdate(Cancel As Integer)
    If IsNull(BO_CBMS) Then
    MsgBox "NUMERO DE TO CBMS É OBRIGATORIO !", vbExclamation, " ATENÇÃO "
    Cancel = True
    BO_CBMS.SetFocus
    If (Not IsNull(DLookup("[BO_CBMS]", "ocorrencias", "[BO_CBMS]='" & Me!BO_CBMS & "'"))) Then
    MsgBox " ESTE NUMERO DE BO CBMS ... JÁ EXISTE " & BO_CBMS.Text, vbInformation, "ATENÇÃO"
    Cancel = True 'CANCELA O EVENTO
    Me!BO_CBMS.Undo 'DE FAZ A DIGITAÇAO
    End if
    End If
    End Sub
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5468
    Registrado : 15/03/2013

    Re: [Resolvido]Função antes de atualizar - BeforeUpdate

    Mensagem  ahteixeira em 19/5/2017, 18:06

    Olá, teste assim:
    Código:
    Private Sub BO_CBMS_BeforeUpdate(Cancel As Integer)
        If IsNull(BO_CBMS) Then
            MsgBox "NUMERO DE TO CBMS É OBRIGATORIO !", vbExclamation, " ATENÇÃO "
            Cancel = True
            BO_CBMS.SetFocus
            If DCount("[BO_CBMS]", "ocorrencias", "[BO_CBMS]='" & Me!BO_CBMS & "'") > 1 Then
                MsgBox " ESTE NUMERO DE BO CBMS ... JÁ EXISTE " & BO_CBMS.Text, vbInformation, "ATENÇÃO"
                Cancel = True 'CANCELA O EVENTO
                Me!BO_CBMS.Undo 'DE FAZ A DIGITAÇAO
            End If
        End If
    End Sub
    Não se esqueça da Indentação do código.
    Abraço

    tonin
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 23/11/2016

    Função antes de atualizar - BeforeUpdate

    Mensagem  tonin em 19/5/2017, 19:00

    Caro amigo inseri o código do jeito que você modificou e não deu certo ele passa pra próxima caixa de teste normal não da como esta em branco e nem repetido.

    não entendi o que você disse em baixo sobre identificação do código.
    pode ser isso que estou errando.

    fico muito agradecido pela sua ajuda.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5468
    Registrado : 15/03/2013

    Re: [Resolvido]Função antes de atualizar - BeforeUpdate

    Mensagem  ahteixeira em 20/5/2017, 00:58

    Olá Ricardo,
    Tinha o outro IF dentro do IF, foi trocar por ELSIF
    Acho que assim vai dar:
    Código:
    Private Sub BO_CBMS_BeforeUpdate(Cancel As Integer)
        If IsNull(BO_CBMS) Then
            MsgBox "NUMERO DE TO CBMS É OBRIGATORIO !", vbExclamation, " ATENÇÃO "
            Cancel = True
        ElseIf DCount("[BO_CBMS]", "ocorrencias", "[BO_CBMS]='" & Me!BO_CBMS & "'") > 1 Then
            MsgBox " ESTE NUMERO DE BO CBMS ... JÁ EXISTE " & BO_CBMS.Text, vbInformation, "ATENÇÃO"
            Cancel = True 'CANCELA O EVENTO
        End If
    End Sub

    Quanto à Indentação, verifique os links da mensagem nº 3 do tópico abaixo:
    [Você precisa estar registrado e conectado para ver este link.]

    Abraço

    tonin
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 23/11/2016

    Função antes de atualizar - BeforeUpdate

    Mensagem  tonin em 23/5/2017, 15:13

    Caro amigo ahteixeira inseri o código do jeito que você postou e também não deu certo.
    não sei aonde estou errando, pois sou novato neste assunto.
    a caixa de testo onde vai o numero da ocorrência tem uma mascara de entrada "0000/00" pode ser isto ou tem outra entrada que esta broqueando
    quando deixo só o código referente a duplicação do numero ele funciona agora os dois junto não.
    esta caixa é a primeira que tem que ser digitada.
    li o artigo que diz sobre indentação.

    fico muito agradecido pela sua ajuda.
    avatar
    tauron
    VIP
    VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1019
    Registrado : 07/12/2011

    Re: [Resolvido]Função antes de atualizar - BeforeUpdate

    Mensagem  tauron em 23/5/2017, 16:52

    Tente no ao perder foco.

    Private Sub BO_CBMS_LostFocus(Cancel As Integer)
       If IsNull(BO_CBMS) Then
           MsgBox "NUMERO DE BO CBMS É OBRIGATORIO !", vbExclamation, " ATENÇÃO "
           Cancel = True
           BO_CBMS.SetFocus
           If DCount("[BO_CBMS]", "ocorrencias", "[BO_CBMS]='" & Me!BO_CBMS & "'") > 1 Then
               MsgBox " ESTE NUMERO DE BO CBMS ... JÁ EXISTE " & BO_CBMS.Text, vbInformation, "ATENÇÃO"
               Cancel = True 'CANCELA O EVENTO
               Me!BO_CBMS.Undo 'DESFAZ A DIGITAÇAO
           End If
       End If
    End Sub

    tonin
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 23/11/2016

    Função antes de atualizar - BeforeUpdate

    Mensagem  tonin em 24/5/2017, 15:29

    Caro amigo ahteixeira, ja tentei de tudo nao consigo. estou mandando meu projeto que esta em andamento para que possa ver onde estou errando.
    é o primeiro campo numero de bo cbms do formulario.
    Anexos
    BO_CBMS.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (284 Kb) Baixado 6 vez(es)
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5468
    Registrado : 15/03/2013

    Re: [Resolvido]Função antes de atualizar - BeforeUpdate

    Mensagem  ahteixeira em 24/5/2017, 16:04

    Olá, teste assim:
    Código:
    Private Sub BO_CBMS_BeforeUpdate(Cancel As Integer)
        
        If Len(BO_CBMS & "") = 0 Then
            MsgBox "NUMERO DE TO CBMS É OBRIGATORIO !", vbExclamation, " ATENÇÃO "
            Cancel = True
            Exit Sub
        End If
        
        If DCount("[BO_CBMS]", "ocorrencias", "[BO_CBMS]='" & Me!BO_CBMS & "'") > 1 Then
            MsgBox " ESTE NUMERO DE BO CBMS ... JÁ EXISTE " & BO_CBMS.Text, vbInformation, "ATENÇÃO"
            Cancel = True 'CANCELA O EVENTO
            Me!BO_CBMS.Undo 'DESFAZ A DIGITAÇAO
        End If
    End Sub

    Para controlar se o campo ficou vazio quando é novo.
    O melhor será controlar ao receber o foco o proximo campo (DATA), teste assim depois se a primeira estiver ok:
    Código:
    Private Sub DATA_GotFocus()
        If Len(BO_CBMS & "") = 0 Then
            MsgBox "NUMERO DE TO CBMS É OBRIGATORIO !", vbExclamation, " ATENÇÃO "
            Cancel = True
            BO_CBMS.SetFocus
        End If
    End Sub

    Abraço

    tonin
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 23/11/2016

    Função antes de atualizar - BeforeUpdate

    Mensagem  tonin em 29/5/2017, 14:58

    Caro amigo ahteixeira, muito obrigado pela informação essa ultima que você me passou deu certo obrigado mesmo.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5468
    Registrado : 15/03/2013

    Re: [Resolvido]Função antes de atualizar - BeforeUpdate

    Mensagem  ahteixeira em 29/5/2017, 15:43

    Ola a todos,
    Ricardo, obrigado pelo retorno.
    Siga a recomendacao do colega Emerson "Nao perder o foco".
    Estude as alteracoes, para compreender o que estava acontecer.

    Abraco a todos

      Data/hora atual: 24/9/2018, 05:21