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 Sex 19 Maio 2017, 11:23 am

    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 : 4534
    Registrado : 15/03/2013

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

    Mensagem  ahteixeira em Sex 19 Maio 2017, 12:06 pm

    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 Sex 19 Maio 2017, 1:00 pm

    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 : 4534
    Registrado : 15/03/2013

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

    Mensagem  ahteixeira em Sex 19 Maio 2017, 6:58 pm

    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 Ter 23 Maio 2017, 9:13 am

    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
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

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

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

    Mensagem  tauron em Ter 23 Maio 2017, 10:52 am

    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 Qua 24 Maio 2017, 9:29 am

    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 5 vez(es)
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

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

    Mensagem  ahteixeira em Qua 24 Maio 2017, 10:04 am

    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 Seg 29 Maio 2017, 8:58 am

    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 : 4534
    Registrado : 15/03/2013

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

    Mensagem  ahteixeira em Seg 29 Maio 2017, 9:43 am

    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: Ter 21 Nov 2017, 2:23 pm