ATENÇÃO NOVOS USUÁRIOS

Se registrou recentemente? Seu cadastro será avaliado e mendiante aprovação, a conta será ativada e você poderá usufruir do fórum. O tempo de avaliação gira em torno de 24 a 48 horas.

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.

Não Permitir Gravar Cpf duplicado

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

Moderador: joseA

CROVADOR
Colaborador
Colaborador
Mensagens: 69
Registrado em: Ter Mar 13, 2018 11:15 am

Não Permitir Gravar Cpf duplicado

Mensagem por CROVADOR » Seg Jan 11, 2021 3:28 pm

Olá amigos, eu novamente pedindo socorro, kkk ...
tenho o seguinte código abaixo e não que que grave o mesmo cpf que já existe no banco de dados.
Alguma idéia pessoal?

Private Sub btnGravar_Click()

If Me.txtNome = Empty Then
MsgBox "Digite O Nome Do Cliente.", vbExclamation, "Atenção"
Me.txtNome.SetFocus
Exit Sub
End If

If Inc = True Then
rsOrçDetum.AddNew
Else

rsOrçGradum.Close
SqlOrçGradum = "DELETE FROM tbOrçamento_Grade1 WHERE Nro_Orçamento = " & NroOrçum 'Apaga os registros antigos
rsOrçGradum.Open SqlOrçGradum, cn, adOpenKeyset, adLockOptimistic 'pra incluir os dados atualizados
SqlOrçGradum = "SELECT * FROM tbOrçamento_Grade1"
rsOrçGradum.Open SqlOrçGradum, cn, adOpenKeyset, adLockOptimistic

End If

rsOrçDetum(1) = Date
rsOrçDetum(2) = Me.txtNome
rsOrçDetum(3) = Me.txtObservaçoes
rsOrçDetum(4) = Me.txtTelefone
rsOrçDetum(5) = Me.txt_contato
rsOrçDetum(6) = Me.txt_email
rsOrçDetum(7) = Me.txt_endereço
rsOrçDetum(8) = Me.txt_cnpj_cpf
rsOrçDetum(9) = Me.txt_ie
rsOrçDetum(10) = Me.TXT_NUMERO
rsOrçDetum(11) = Me.txt_bairro
rsOrçDetum(12) = Me.txt_cep
rsOrçDetum(13) = Me.txt_cidade
rsOrçDetum(14) = Me.txt_uf

rsOrçDetum.Update

For i = 1 To Me.lstvOrç.ListItems.Count
With Me.lstvOrç
rsOrçGradum.AddNew
rsOrçGradum(0) = NroOrçum
rsOrçGradum(1) = .ListItems(i)
rsOrçGradum(2) = .ListItems(i).ListSubItems(1)

rsOrçGradum.Update
End With
Next i
If Inc = True Then
rsNroum.AddNew
rsNroum(0) = NroOrçum
rsNroum.Update
End If

LimpaControles
rsNroum.MoveLast
NroOrçum = rsNroum(0).Value + 1
Me.stbOrç.Panels(1) = "Nro Orç.: " & NroOrçum
iCancel = 0
MsgBox "Registro Salvo Com Sucesso.", vbInformation, "Clientes"
Me.btnLer.Enabled = True

End Sub



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
webmaster
Administrador
Mensagens: 2874
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Não Permitir Gravar Cpf duplicado

Mensagem por webmaster » Qua Jan 13, 2021 12:35 am

Crovador,

O Access tem essa funcionalidade de fábrica. O campo em questão pode ser marcado como Indexado = Sim (Não Duplicado).

Isso resolve o problema.


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

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

Re: Não Permitir Gravar Cpf duplicado

Mensagem por Reinaldo » Qua Jan 13, 2021 10:54 am

Em adicional, verifique se a sugestão do Paulinho (PMPOKER) no tópico https://www.tomasvasquez.com.br/forum/v ... =22&t=6427, não lhe auxilia


Reinaldo
:oops: :D :mrgreen: :geek:

CROVADOR
Colaborador
Colaborador
Mensagens: 69
Registrado em: Ter Mar 13, 2018 11:15 am

Re: Não Permitir Gravar Cpf duplicado

Mensagem por CROVADOR » Qua Jan 13, 2021 2:20 pm

Fiz o procedimento mas não deu certo, ele apresenta erro!

erro em tempo de execução 2147217887 (80040e21)
as alterações solicitadas para a tabela não foram satisfatórias já que criaram valores duplicados....



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
webmaster
Administrador
Mensagens: 2874
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Não Permitir Gravar Cpf duplicado

Mensagem por webmaster » Qua Jan 13, 2021 10:55 pm

Crovador,

Mas é exatamente isso que precisa acontecer. Leia a mensagem. Capture o erro e apresente o alerta.

Fazer direto pelo Access não é só mais rápido como garantido.


Tomás
https://www.tomasvasquez.com.br/blog
https://www.tomasvasquez.com.br/cursocsharp
https://twitter.com/tomamais
Se sua dúvida foi solucionada, acrescente [RESOLVIDO] ao título.

CROVADOR
Colaborador
Colaborador
Mensagens: 69
Registrado em: Ter Mar 13, 2018 11:15 am

Re: Não Permitir Gravar Cpf duplicado

Mensagem por CROVADOR » Qui Jan 14, 2021 8:25 am

Bom dia amigo, não consegui fazer, vou mandar aqui o anexo, se poder dar uma olha sem te atrapalhar ficaria grato, e mais uma vez obrigado pela sua atenção....
está em cadastro de clientes...
Anexos
Nova pasta.rar
(140.84 KiB) Baixado 16 vezes



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

Re: Não Permitir Gravar Cpf duplicado

Mensagem por Reinaldo » Qui Jan 14, 2021 3:46 pm

Creio eu que a tabela em questão seja a de nome ==> "tbOrç_Detalhe1"
Como disse o Webmaster, sua tabela já está "configurada" para não aceitar cpf/cnpj duplicado; e o access controla essa situação de maneira eficiente; assim ao tentar incluir um registro de cliente com esse campo duplicado, irá gerar um erro ao salvar o registro.
Se desejar utilizar a proposta do outro tópico, primeiro e preciso definir em que momento essa comparação deva ser efetuada.


Reinaldo
:oops: :D :mrgreen: :geek:

CROVADOR
Colaborador
Colaborador
Mensagens: 69
Registrado em: Ter Mar 13, 2018 11:15 am

Re: Não Permitir Gravar Cpf duplicado

Mensagem por CROVADOR » Qui Jan 14, 2021 4:27 pm

Isso mesmo Reinaldo, eu tentei fazer igual ao tópico recomendado mas não consegui, eu queria que ao gravar o cliente se já existir no banco ele exibia uma mensagem e não deixasse realizar a gravação.
se poder me auxiliar para fazer este código eu ficaria grato.

mais uma vez muito obrigado pela sua atenção, este fórum todos são shows, que Deus abençoe...
aguardo guri...



CROVADOR
Colaborador
Colaborador
Mensagens: 69
Registrado em: Ter Mar 13, 2018 11:15 am

Re: Não Permitir Gravar Cpf duplicado

Mensagem por CROVADOR » Ter Jan 19, 2021 12:32 pm

Amigos tentei usar este código para evitar cadastrar mesmo cpf, mas não tive exito...
Socorro!!!! kkkk

Private Sub btnGravar_Click()

'verificar se o registro já existe na tabela
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "\Banco.mdb"
rstBanco.Open "SELECT * Valor FROM tbOrçamento_Grade1 WHERE cnpj_cpf=" & Me.txt_cnpj_cpf.Text, cn, 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(rsOrçGradum.RecordCount) Or rsOrçGradum.RecordCount < 1 Then 'Se o Recordset é nulo ou não existe o registro:
With rsOrçGradum
.AddNew
.Fields("cnpj_cpf") = Me.txt_cnpj_cpf.Text
rsOrçGradum.Update
End With
Else
MsgBox "Código já cadastrado!"
Exit Sub
End If

If Me.txtNome = Empty Then
MsgBox "Digite O Nome Do Cliente.", vbExclamation, "Atenção"
Me.txtNome.SetFocus
Exit Sub
End If

If Me.txt_cnpj_cpf = Empty Then
MsgBox "Digite Cnpj/Cpf.", vbExclamation, "Atenção"
Me.txt_cnpj_cpf.SetFocus
Exit Sub
End If

If Inc = True Then
rsOrçDetum.AddNew
Else

rsOrçGradum.Close
SqlOrçGradum = "DELETE FROM tbOrçamento_Grade1 WHERE Nro_Orçamento = " & NroOrçum 'Apaga os registros antigos
rsOrçGradum.Open SqlOrçGradum, cn, adOpenKeyset, adLockOptimistic 'pra incluir os dados atualizados
SqlOrçGradum = "SELECT * FROM tbOrçamento_Grade1"
rsOrçGradum.Open SqlOrçGradum, cn, adOpenKeyset, adLockOptimistic

End If

rsOrçDetum(1) = Date
rsOrçDetum(2) = Me.txtNome
rsOrçDetum(3) = Me.txtObservaçoes
rsOrçDetum(4) = Me.txtTelefone
rsOrçDetum(5) = Me.txt_contato
rsOrçDetum(6) = Me.txt_email
rsOrçDetum(7) = Me.txt_endereço
rsOrçDetum(8) = Me.txt_cnpj_cpf
rsOrçDetum(9) = Me.txt_ie
rsOrçDetum(10) = Me.TXT_NUMERO
rsOrçDetum(11) = Me.txt_bairro
rsOrçDetum(12) = Me.txt_cep
rsOrçDetum(13) = Me.txt_cidade
rsOrçDetum(14) = Me.txt_uf

rsOrçDetum.Update

For i = 1 To Me.lstvOrç.ListItems.Count
With Me.lstvOrç
rsOrçGradum.AddNew
rsOrçGradum(0) = NroOrçum
rsOrçGradum(1) = .ListItems(i)
rsOrçGradum(2) = .ListItems(i).ListSubItems(1)

rsOrçGradum.Update
End With
Next i
If Inc = True Then
rsNroum.AddNew
rsNroum(0) = NroOrçum
rsNroum.Update
End If

LimpaControles
rsNroum.MoveLast
NroOrçum = rsNroum(0).Value + 1
Me.stbOrç.Panels(1) = "Nro Orç.: " & NroOrçum
iCancel = 0
MsgBox "Registro Salvo Com Sucesso.", vbInformation, "Clientes"
Me.btnLer.Enabled = True

End Sub
Editado pela última vez por CROVADOR em Ter Jan 19, 2021 1:07 pm, em um total de 1 vez.



Raygsson
Colaborador
Colaborador
Mensagens: 94
Registrado em: Sex Jan 31, 2020 8:06 pm

Re: Não Permitir Gravar Cpf duplicado

Mensagem por Raygsson » Ter Jan 19, 2021 12:54 pm

Fazer uma consulta e verificar se o RecordSet está vazio é uma opção, pq não deu certo? Qual erro?
Não vi a parte que faz o SELECT pra gerar o RecordSet antes de fazer o teste nele, tem que ser a primeira coisa.



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