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]Evitar registro duplicado

    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Evitar registro duplicado Empty [Resolvido]Evitar registro duplicado

    Mensagem  Veríssimo 8/3/2017, 15:17

    Preciso evitar o inclusão de registros já existentes quando ele tiver o mesmo nome, RG, e Estado da Federação.
    Somente pelo campo Nome eu consegui através do exemplo do mestre Avelino Sampaio, conforme segue:

    Private Sub Nome_BeforeUpdate(Cancel As Integer)
    'Autor Avelino Sampaio
    If DCount("Nome", "tbldados", "Nome = '" & Me!Nome & "'") > 0 Then
       MsgBox "Pessoa já cadastrada.", vbExclamation, "Aviso"
       Cancel = True
       Me.Undo
       End If
    End Sub

    Porém, ao tentar implementá-lo com os três campos, não estou conseguindo:
    Segue o que fiz:

    Private Sub RG_Estado_BeforeUpdate(Cancel As Integer)
    If DCount("Nome", "tblDados", "Nome = '" & Me!Nome & "'" And "RG", "tblDados", "RG= '" & Me!RG & "'" And "RG_Estado", "tblDados", "RG_Estado= '" & Me!RG_Estado & "'") > 0 Then
       MsgBox "Pessoa já cadastrada.", vbExclamation, "Aviso"
       Cancel = True
       Me.Undo
       End If
    End Sub
    Mensagem de erro:
    [Resolvido]Evitar registro duplicado <a href=[Resolvido]Evitar registro duplicado Sem_ty12" />

    Já tentei com parenteses em cada expressão entre os "And" e também não deu certo.
    Alguma idéia?
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Evitar registro duplicado Empty Evitar registro duplicado

    Mensagem  CassioFabre 8/3/2017, 16:03

    Boa tarde,

    Você está usando errado o critério do DCount(). Substitua por:

    Código:
    If DCount("Nome", "tblDados", "Nome = '" & Me!Nome & "'" and RG= '" & Me!RG & "'" And RG_Estado= '" & Me!RG_Estado & "'") > 0 Then

    Abraço.


    Última edição por CassioFabre em 9/3/2017, 18:09, editado 1 vez(es)
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Evitar registro duplicado Empty Re: [Resolvido]Evitar registro duplicado

    Mensagem  Veríssimo 8/3/2017, 17:02

    Novo erro:

    "Tipos incompatíveis"

    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Evitar registro duplicado Empty Evitar registro duplicado

    Mensagem  CassioFabre 8/3/2017, 17:16

    Boa tarde,

    No criterio do DCount() você espeficou que os tres campos na tabela são do tipo texto. Verifique se é isso mesmo e segue abaixo uma breve explicação de como especificar no criterio.

    Quando for campo do tipo TEXTO, utiliza-se aspas simples (' ') entre o nome do campo/variável. Ex.: supondo que o campo Nome seja do tipo texto, vai colocar assim no criterio Nome = '" & me.Nome & "'

    Quando for campo do tipo NUMÉRICO, não se utiliza as aspas simples, somente a dupla normal. Ex.: supondo que o campo RG seja do tipo numérico (e nao de texto como no criterio), você vai escrever RG = " & me.RG & " (aplica igual para todos os campos desse tipo).

    Se for do tipo DATA, ao inves de aspas simples, utiliza-se a tralha (#). Ex: data_inicio = #" & me.txtDataInicio & "#

    Abraço.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Evitar registro duplicado Empty Re: [Resolvido]Evitar registro duplicado

    Mensagem  Veríssimo 8/3/2017, 20:59

    CassioFabre,
    Já tentei várias combinações e nada!!!!
    O campo Nome é texto;
    O campo RG é número;
    O campo RG_Estado é uma ComboBox com as siglas de todos os estados da federação.
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Evitar registro duplicado Empty Re: [Resolvido]Evitar registro duplicado

    Mensagem  CassioFabre 9/3/2017, 10:16

    Bom dia,

    Tente:
    Código:
    If DCount("Nome", "tblDados", "Nome = '" & Me!Nome & "' and RG= " & Me!RG & " And RG_Estado= '" & Me!RG_Estado & "'") > 0 Then

    Abraço.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Evitar registro duplicado Empty Re: [Resolvido]Evitar registro duplicado

    Mensagem  Veríssimo 9/3/2017, 13:57

    CassioFabre,
    Já havia tentado assim também.
    Na verdade, tentei de todas as formas já, acho!!!! e nada ainda.
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Evitar registro duplicado Empty Evitar registro duplicado

    Mensagem  CassioFabre 9/3/2017, 15:50

    Boa tarde,

    Mande um modelo reduzido do bd apenas com o formulário e as tabelas relacionadas.

    Abraço.
    Veríssimo
    Veríssimo
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 296
    Registrado : 07/06/2011

    [Resolvido]Evitar registro duplicado Empty Re: [Resolvido]Evitar registro duplicado

    Mensagem  Veríssimo 9/3/2017, 17:10

    CassioFabre,

    Agradeço muito sua ajuda.

    Consegui fazendo:

    Private Sub RG_Estado_BeforeUpdate(Cancel As Integer)
    If DCount("Nome", "tblDados", "Nome = '" & Me!Nome & "' and RG= '" & Me!RG & "' And RG_Estado= '" & Me!RG_Estado & "'") > 0 Then
    MsgBox "Pessoa já cadastrada.", vbExclamation, "Aviso"
    Cancel = True
    Me.Undo
    End If
    End Sub

    Mas isso, somente após seu exemplo.

    abraços
    CassioFabre
    CassioFabre
    Super Avançado
    Super Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 731
    Registrado : 18/01/2013

    [Resolvido]Evitar registro duplicado Empty [Resolvido]Evitar registro duplicado

    Mensagem  CassioFabre 9/3/2017, 18:08

    Boa tarde,

    Então todos os tres campos na tabela eram do tipo texto, e não numérico como dito anteriormente.

    Mas que bom que conseguiu, agradecemos o retorno.

    Abraço.

    Conteúdo patrocinado


    [Resolvido]Evitar registro duplicado Empty Re: [Resolvido]Evitar registro duplicado

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 01:25