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


4 participantes

    Duplicação de registo

    avatar
    Luis F
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Duplicação de registo Empty Duplicação de registo

    Mensagem  Luis F 19/10/2013, 14: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...
    avatar
    misaelsp
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

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

    Duplicação de registo Empty Re: Duplicação de registo

    Mensagem  misaelsp 19/10/2013, 15: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 Very Happy
    avatar
    Luis F
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Duplicação de registo Empty Re: Duplicação de registo

    Mensagem  Luis F 20/10/2013, 12: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
    Assis
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    Duplicação de registo Empty Re: Duplicação de registo

    Mensagem  Assis 20/10/2013, 13:13

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


    .................................................................................
    *** Só sei que nada sei ***
    avatar
    llsmigoll
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Duplicação de registo Empty Re: Duplicação de registo

    Mensagem  llsmigoll 20/10/2013, 13: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 
    avatar
    Luis F
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Duplicação de registo Empty Re: Duplicação de registo

    Mensagem  Luis F 20/10/2013, 15: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
    avatar
    llsmigoll
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    Duplicação de registo Empty Re: Duplicação de registo

    Mensagem  llsmigoll 20/10/2013, 15:30

    Obrigado pelo retorno !

    Conteúdo patrocinado


    Duplicação de registo Empty Re: Duplicação de registo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/3/2024, 04:36