Vídeo recomendado
https://youtu.be/diWPPPhW-9E

[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 »

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
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Impedir cadastro em duplicidade

Mensagem por PRMPOKER »

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!


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 »

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: 1537
Registrado em: Sex Ago 01, 2014 4:09 pm
Localização: Garça - SP / SCS - SP

Re: Impedir cadastro em duplicidade

Mensagem por Reinaldo »

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


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
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: Impedir cadastro em duplicidade

Mensagem por PRMPOKER »

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.


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 »

Caros amigos, Paulo e Reinaldo

Agora funcionou perfeitamente. Muito Obrigado

Deus abençoe vocês


Avatar do usuário
PRMPOKER
Consultor
Consultor
Mensagens: 206
Registrado em: Ter Dez 04, 2012 8:57 am

Re: [RESOLVIDO] Impedir cadastro em duplicidade

Mensagem por PRMPOKER »

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.


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