MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    Duplicação de registo

    Compartilhe

    Luis F
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 18/10/2013

    Duplicação de registo

    Mensagem  Luis F em Sab 19 Out - 9:10

    Boa tarde,

    Gostaria de saber como consigo em módulo VBA informar que um registo de uma tabela já está inserido (duplicado).

    Exemplo:

    Tenho uma tabela "T_GERAL" com os campos [COD_CLI];[NOME];[MORADA]
    e tenho um formulário de introdução "F_GERAL" e quero que ao perder foco ou antes de atualizar o campo [COD_CLI] me diga por mensagem que esse registo que se está a introduzir já existe (caso esteja duplicado) e que me volte para esse mesmo campo ([COD_CLI]).

    O campo [COD_CLI] está como numérico e está indexado com duplicação não autorizada na tabela "T_GERAL".

    Eu sei que se for até ao fim do formulário e quando passar para o próximo registo ele me avisa o que eu não queria era chegar até ao ultimo campo do formulário.

    Agradeço a quem me ajudar...

    misaelsp
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 44
    Registrado : 20/02/2013

    Re: Duplicação de registo

    Mensagem  misaelsp em Sab 19 Out - 10:14

    Luiz,
    Escrevi um código que acho que irá te ajudar, de uma olhadinha:

    'Declaração das variaveis
    'Variavel dados serve para pegar dados de um campo na tabela
    Dim varDados
    Dim rs As Recordset
    Dim strsql As String

    'Sql que verifica na tabela se existe no campo um registro com o mesmo nome que estou digitando
    strsql = "SELECT * FROM nomedatabela WHERE dados1 = '" & camponome & "';"

    'Se ocorrer um erro prossiga com a execução do código
    On Error Resume Next

    Set rs = CurrentDb.OpenRecordset(strsql)

    varDados = rs!dados1

    rs.Close
    Set rs = Nothing

    If varDados > 0 Then
       
       MsgBox "Existe registro duplicado"
       
    Else
       
       MsgBox "Não existe registro duplicado"
       
    End If


    Espero ter ajudado, Very Happy

    Caso o problema esteja resolvido, atualize o tópico como resolvido Very Happy
    Cumprimentos.


    .................................................................................
    É fazendo que se aprende a fazer aquilo que se deve aprender a fazer [Você precisa estar registrado e conectado para ver esta imagem.]

    Luis F
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 18/10/2013

    Re: Duplicação de registo

    Mensagem  Luis F em Dom 20 Out - 7:43

    misaelsp, Obrigado pela informação

    fiz o que disse mas o problema é que me informa sempre de que "Não existe registro duplicado", mesmo sendo duplicado

    O que fiz...

    Private Sub ID_Cli_AfterUpdate()

    Dim varDados
    Dim rs As Recordset
    Dim strsql As String

    'Sql que verifica na tabela se existe no campo um registro com o mesmo nome que estou digitando
    strsql = "SELECT * FROM T_GERAL WHERE COD_CLI = '" & Me!ID_Cli & "';"

    'O ID_Cli é o nome que está associado ao COD_CLI no formulário F_GERAL (Private Sub ID_Cli_AfterUpdate())


    'Se ocorrer um erro prossiga com a execução do código
    On Error Resume Next

    Set rs = CurrentDb.OpenRecordset(strsql)

    varDados = rs!ID_Cli

    rs.Close
    Set rs = Nothing

    If varDados > 1 Then
     
      MsgBox "Existe registro duplicado"
     
    Else
     
      MsgBox "Não existe registro duplicado"
     
    End If

    End Sub



    Fiz alguma coisa mal??? Desculpem mas estou no inicio do access e se fizer algo mal não levem a mal.... Smile

    NOTA: Verifiquei o valor da variável varDados antes do IF e é "nada" ou seja vazio

    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 2746
    Registrado : 06/11/2009

    Re: Duplicação de registo

    Mensagem  Assis em Dom 20 Out - 8:13

    Boa tarde Luis
    Quer postar o seu exemplo ?
    Para puder ajudar ....


    .................................................................................
    *** Só sei que nada sei ***

    llsmigoll
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 15/04/2013

    Re: Duplicação de registo

    Mensagem  llsmigoll em Dom 20 Out - 8:32

    Luis F.

    Veja se este código te ajuda, a função dele é exatamente procurar os valores duplicados em uma tabela


    Código:
     If Not IsNull(DLookup("[Campo da tabela]", "Nome da tabela", "[Campo da tabela]=" & Me.campo que não pode estar duplicado)) Then
    MsgBox "Esse não pode ser armazenado", vbInformation, "Aviso !"
    me.Campo que não pode estar duplicado.SetFocus
    A função dele é pesquisar em uma determinada tabela, se a o valor que você digitou em uma caixa de texto, e se esta pesquisa retornar um valor, ele exibira a mensagem.

    Veja se isso te ajuda. rabbit 

    Luis F
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 13
    Registrado : 18/10/2013

    Re: Duplicação de registo

    Mensagem  Luis F em Dom 20 Out - 10:21

    Obrigado llsmigoll,

    funcionou na perfeição


    Private Sub ID_Cli_BeforeUpdate(Cancel As Integer)
       
       If Not IsNull(DLookup("[COD_CLI]", "T_GERAL", "[COD_CLI]=" & Me!ID_Cli )) Then
           MsgBox "O Cliente" & Me!ID_Cli & " já existe", vbInformation, "Aviso duplicação de registo !"
           Me.Undo
           Cancel = True
       End If
       
    End Sub

    Obrigado a todos os outros que me enviaram mensagem... Smile

    llsmigoll
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 20
    Registrado : 15/04/2013

    Re: Duplicação de registo

    Mensagem  llsmigoll em Dom 20 Out - 10:30

    Obrigado pelo retorno !

      Data/hora atual: Seg 5 Dez - 12:34