Esqueceu sua senha? Você pode usar o mecanismo de lembrete neste link: Recuperar senha

Você receberá um link de reativação no email cadastrado.

Não recebeu o email? Lembre-se checar o Lixo Eletrônico.

[RESOLVIDO] Impedir cadastro em duplicidade

Discussões sobre a integração do Excel com o Banco de Dados Access

Moderador: joseA

andre220
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Dom Jul 22, 2018 4:47 pm

[RESOLVIDO] Impedir cadastro em duplicidade

Mensagem por andre220 » Dom Jul 22, 2018 7:40 pm

Caros amigos,

Não estou conseguindo impedir que o campo CodProduto aceite cadastro em duplicidade.
Alguém poderia me ajudar? Muito obrigado

Código: Selecionar todos

Private Sub UserForm_Activate()
    cnnBanco.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "\Banco_SIG.mdb"
    rstBanco.Open "SELECT Id, CodProduto, NomeProduto, Valor FROM TblProduto", cnnBanco, adOpenKeyset, adLockOptimistic, adCmdText
    Indice = rstBanco.AbsolutePosition
    Activar
    
   
End Sub


Sub Incluir_Registro()
    
     If Me.txtCodProduto.Text = "" Or txtNomeProdutoFlora.Text = "" Or Me.txtValor.Text = "" Then
        
       MsgBox "Os campos: Código do Produto, Nome Produto, Valor, não devem ficar em branco, digite!!!", 64, "Aviso"
Else
      
    ''Inserindo os dados na tabela
    With rstBanco
        .AddNew
        .Fields("CodProduto") = Me.txtCodProduto.Text
        .Fields("NomeProduto") = Me.txtNomeProduto.Text
        .Fields("Valor") = Me.txtValor.Text
        rstBanco.Update
        
        lblMensagemSim.Caption = "Registro salvo com sucesso."
        
    End With
    
End If
End Sub
Editado pela última vez por andre220 em Qui Jul 26, 2018 1:43 am, em um total de 1 vez.



Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
PRMPOKER
Manda bem
Manda bem
Mensagens: 194
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Impedir cadastro em duplicidade

Mensagem por PRMPOKER » Seg Jul 23, 2018 4:27 pm

Prezado andre220,

Para validar se o CodProduto já existe e impedir a duplicidade, utilize a função Dlookup, da seguinte maneira:

Código: Selecionar todos

'(verificar se o tipo do campo na tabela e declarar a variável de acordo)
Dim vCodProduto as integer 
'A função DLookup busca o campo "CodProduto", na tabela "TblProduto", respeitando a condição "CodProduto="
vCodProduto = Dlookup("CodProduto", "TblProduto", "CodProduto=" & Me.txtCodProduto.Text)

'Testa se a variável possui algum retorno, ou seja, se existe o registro. Caso não exista, segue na rotina de inclusão. Caso exista, exibe uma mensagem.
If Isnull(vCodProduto)  or vCodProduto = "" then 'Se a variável é nula ou vazia:
    With rstBanco
        .AddNew
        .Fields("CodProduto") = Me.txtCodProduto.Text
        .Fields("NomeProduto") = Me.txtNomeProduto.Text
        .Fields("Valor") = Me.txtValor.Text
        rstBanco.Update        
        lblMensagemSim.Caption = "Registro salvo com sucesso."        
    End With
Else
      Msgbox "Código já cadastrado!"
      Exit Sub
End If
Faz uma busca no Google sobre a função DLookup. É muito útil.

Qualquer coisa, dá um grito.

Abraço!



Paulinho Monteiro
VBA - Front/BackEnd Developer

Email: falecom@paulinhomonteiro.com
falecompaulinhomonteiro@gmail.com
Whatsapp (54) 9925 340 85
www.paulinhomonteiro.com

andre220
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Dom Jul 22, 2018 4:47 pm

Re: Impedir cadastro em duplicidade

Mensagem por andre220 » Seg Jul 23, 2018 8:31 pm

Paulo,

Muito Obrigado pelo retorno

Deu erro aqui na função DLookup

erro "Sub ou Function não definida"

Não consegui solucionar :(

Abraços!



Avatar do usuário
Reinaldo
Jedi
Jedi
Mensagens: 1189
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Impedir cadastro em duplicidade

Mensagem por Reinaldo » Ter Jul 24, 2018 10:43 am

Se não me engano, Dlookup e uma função de banco de dados, e como tal, não é presente no Excel gerando assim o erro.
Para utiliza-la no escopo de seu procedimento, el necessário aloca-la, convenientemente/adequadamente na clasula select de sua rotina


Reinaldo
Gostou da resposta?:?: :oops: :D :mrgreen:

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
PRMPOKER
Manda bem
Manda bem
Mensagens: 194
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Impedir cadastro em duplicidade

Mensagem por PRMPOKER » Qua Jul 25, 2018 9:35 am

Bom dia Pessoal,
Reinaldo, em função do tópico ser Excel+Access, acabei me atrapalhando, hehehehe....

Então andre220, basta que você busque verificar se o registro existe, fazendo uma contagem no Recordset:

Código: Selecionar todos

'verificar se o registro já existe na tabela
 cnnBanco.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "\Banco_SIG.mdb"
    rstBanco.Open "SELECT * Valor FROM TblProduto WHERE CodProduto=" & Me.txtNomeProduto.Text, cnnBanco, adOpenKeyset, adLockOptimistic, adCmdText
    

'Testa se o Recordset possui algum retorno, ou seja, se existe o registro. Caso não exista, segue na rotina de inclusão. Caso exista, exibe uma mensagem.
If Isnull(rstBanco.Recordcount)  or rstBanco.Recordcount < 1 then 'Se o Recordset é nulo ou não existe o registro:
    With rstBanco
        .AddNew
        .Fields("CodProduto") = Me.txtCodProduto.Text
        .Fields("NomeProduto") = Me.txtNomeProduto.Text
        .Fields("Valor") = Me.txtValor.Text
        rstBanco.Update        
        lblMensagemSim.Caption = "Registro salvo com sucesso."        
    End With
Else
      Msgbox "Código já cadastrado!"
      Exit Sub
End If
Testa aí e nos retorne, por favor.



Paulinho Monteiro
VBA - Front/BackEnd Developer

Email: falecom@paulinhomonteiro.com
falecompaulinhomonteiro@gmail.com
Whatsapp (54) 9925 340 85
www.paulinhomonteiro.com

andre220
Acabou de chegar
Acabou de chegar
Mensagens: 7
Registrado em: Dom Jul 22, 2018 4:47 pm

Re: Impedir cadastro em duplicidade

Mensagem por andre220 » Qui Jul 26, 2018 1:42 am

Caros amigos, Paulo e Reinaldo

Agora funcionou perfeitamente. Muito Obrigado

Deus abençoe vocês



Avatar do usuário
PRMPOKER
Manda bem
Manda bem
Mensagens: 194
Registrado em: Ter Dez 04, 2012 8:57 am

Re: [RESOLVIDO] Impedir cadastro em duplicidade

Mensagem por PRMPOKER » Sex Jul 27, 2018 12:46 pm

Caro André, bom dia!

A satisfação é minha, e certamente também do Reinaldo, por de alguma forma, podermos ser úteis.

Grande abraço!

Paulinho Monteiro.



Paulinho Monteiro
VBA - Front/BackEnd Developer

Email: falecom@paulinhomonteiro.com
falecompaulinhomonteiro@gmail.com
Whatsapp (54) 9925 340 85
www.paulinhomonteiro.com

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder