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]Verificar Duplicidade com Condição

    avatar
    Alisson
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 28/10/2011

    [Resolvido]Verificar Duplicidade com Condição Empty [Resolvido]Verificar Duplicidade com Condição

    Mensagem  Alisson 1/2/2012, 17:53

    Pessoal,

    Tenho um formulário num BD Access 2002 em que preciso verificar a duplicidade na seguinte situação:

    - Um registro não pode ter o campo Numero E o campo Ano iguais ao de outro registro. Se o Numero for igual, mas o Ano for diferente não tem problema.
    - O usuário vai digitar o Numero, depois vai digitar a Data no formato dd/mm/aaaa. O campo Ano recebe Year(Data) internamente.
    - Quando ele digitar a Data eu preciso verificar se o par Ano E Numero não aparece em outro registro. Caso apareça, mando uma mensagem avisando e pedindo pra alterar o ano da data.

    Tentei fazer isso adaptando esse código, mas não consegui:

    Private Sub Numero_BeforeUpdate(Cancel As Integer)
    If (Not IsNull(DLookup("[Numero]", "TabelaDoc", ("[Numero] ='" & Me.Numero & "'")))) Then
    MsgBox "O número já foi utilizado.", vbInformation
    Cancel = True
    Me.Numero.Undo
    End If
    End Sub

    Desde já, obrigado.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Verificar Duplicidade com Condição Empty Re: [Resolvido]Verificar Duplicidade com Condição

    Mensagem  criquio 1/2/2012, 19:37

    Talvez algo assim:

    If DCount("*", "NomeTabela", "Campo1 ='" & Me.Campo1 & "' And Year(Campo2) = " & Me.Campo2 & "") Then


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Alisson
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 28/10/2011

    [Resolvido]Verificar Duplicidade com Condição Empty Re: [Resolvido]Verificar Duplicidade com Condição

    Mensagem  Alisson 2/2/2012, 11:29

    Criquio,

    Eu fiz o seguinte:

    Coloquei esse código evento BeforeUpdate do campo DataDoc:

    'Obs: Numero, Data, Ano são nomes de campos da tabela TabelaDoc. NumeroDoc, DataDoc e AnoDoc são nomes de campos do formulário FormDoc
    Código:

        AnoDoc = Year(DataDoc)
        Dim NumeroRepetido As Variant
        NumeroRepetido = DLookup("Numero", "TabelaDoc", "(Numero ='" & Me!Numero & "') And ( Year(Data)= '" & Me!Ano & "')")
                If Not IsNull(NumeroRepetido) Then
                    MsgBox "Esse nº já foi utilizado nesse ano.", vbInformation
                    Cancel = True  'não funciona
                    DataIP.SetFocus  'não funciona
                    DataIP = Null  ' não funciona
                    NumeroIP.SetFocus  'não funciona
                End If

    Com isso a busca funciona. Eu consigo identificar quando o par Numero e Ano já existe.
    O problema é que aqueles quatro últimos comandos parecem não ter efeito. Eu não consigo limpar o campo DataDoc do formulário, nem mover o foco novamente para o campo NumeroDoc. Desse jeito, é possível passar pro campo seguinte e manter a duplicidade. Sad
    Além disso, (não sei porque) quando a duplicidade é detectada aparece aquela mensagem:

    "O valor no campo ou registro viola a regra de validação para o registro ou campo."

    Mas não tem regra de validação em nenhum desses campos. O que existe são eventos Enter e AfterUpdate. O evento Enter verifica se os campos já estão preenchidos e os bloqueia para edição. O AfterUpdate salva as informações num Log.
    avatar
    Alisson
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12
    Registrado : 28/10/2011

    [Resolvido]Verificar Duplicidade com Condição Empty Re: [Resolvido]Verificar Duplicidade com Condição

    Mensagem  Alisson 2/2/2012, 12:29

    Criquio,

    Obrigado pela ajuda. Consegui resolver. Separei os eventos em BeforeUpdate e Exit. Ficou assim:
    Código:

    Private Sub DataDoc_BeforeUpdate(Cancel As Integer)
        AnoDoc = Year(DataDoc)
    End Sub

    Private Sub DataDoc_Exit(Cancel As Integer)
        Dim NumeroRepetido As Variant
        NumeroRepetido = DLookup("Numero", "TabelaDoc", "(Numero ='" & Me!Numero & "') And ( Year(Data) ='" & Me!Ano & "')")
        If Not IsNull(NumeroRepetido) Then
            MsgBox "Esse nº de documento já existe para o ano informado.", vbInformation
            DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70  'encontrei esse comando pesquisando em outro forum
            NumeroDoc.SetFocus
        End If
    End Sub
    Acho que com isso o problema fica resolvido! Wink
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Verificar Duplicidade com Condição Empty Re: [Resolvido]Verificar Duplicidade com Condição

    Mensagem  criquio 2/2/2012, 20:30

    Grato pelo retorno.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.


    Conteúdo patrocinado


    [Resolvido]Verificar Duplicidade com Condição Empty Re: [Resolvido]Verificar Duplicidade com Condição

    Mensagem  Conteúdo patrocinado


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