Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

luescalda

cpf com numeros repetidos

Recommended Posts

Amigos, Já tenho uma rotina para validar cpf, porém ele deixa cadastrar numeros repetidos (ex. 11111111111) e não posso deixar dessa forma o código. Alguém pode me ajudar? Bjs e obrigada! O código que tenho é esse: Function ErroCPF(ByVal pCPF As String) As Boolean Dim I As Integer Dim vetor(10) As Integer Dim dv_1 As Integer Dim dv_2 As Integer Dim Soma As Single Dim xCpf As String For I = 1 To 11 xCpf = Mid(pCPF, I, 1) If Not IsNumeric(xCpf) Then MsgBox "CIC Inválido!", vbCritical, "Sistema Gerencial" ErroCPF = True Exit Function End If Next If Len(pCPF) = 11 Then For I = 0 To 10 vetor(I) = Mid$(pCPF, I + 1, 1) Next Soma = (1 * vetor(0)) + (2 * vetor(1)) + (3 * vetor(2)) + (4 * vetor(3)) + (5 * vetor(4)) + (6 * vetor(5)) + (7 * vetor(6)) + (8 * vetor(7)) + (9 * vetor(8)) dv_1 = Soma Mod 11 If dv_1 = 10 Then dv_1 = 0 End If If vetor(9) = dv_1 Then Soma = (1 * vetor(1)) + (2 * vetor(2)) + (3 * vetor(3)) + (4 * vetor(4)) + (5 * vetor(5)) + (6 * vetor(6)) + (7 * vetor(7)) + (8 * vetor(8)) + (9 * vetor(9)) dv_2 = Soma Mod 11 If dv_2 = 10 Then dv_2 = 0 End If If vetor(10) = dv_2 Then ErroCPF = False Else MsgBox "Dígito verificador '" & vetor(10) & "' errado!", vbCritical, "Sistema Gerencial" ErroCPF = True End If Else MsgBox "Dígito verificador '" & vetor(9) & "' errado!", vbCritical, "Sistema Gerencial" ErroCPF = True End If Else MsgBox "Tamanho do CIC inválido!", vbCritical, "Sistema Gerencial" ErroCPF = True End If End Function lu escalda

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já que possui um validador, você pode:- definir no banco de dados este campo como único, ou seja, não permite duplicatas.- ou fazer uma consulta na tabela com o cpf que está tentando gravar, e se existir exibir a mensagem p/ usuário informando que o cpf já existe no cadastro, e aí o programa cancela a operação até que informe outro cpf.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para evitar que todos os número seja iguais faz assim:

for x=0 to 9    if pcpf = string(cstr(x),11) then           'cpf inválido    end ifnext x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente, na propria funçao ja dá pra fazer o que eu quero, eu to tentando e acho q so falta um detalhe no trecho que coloquei o comentario ''VERIFICA SE SAO DIGITADOS NUMEROS REPETIDOS. Na primeira tentativa da certo, depois começa a dar erro. Alguem pode dar uma olhada??Luiz, nao deu certo colocar esse trecho do codigo na function... mesmo assim, obrigada!Obrigada a todos!LuFunction ErroCPF(ByVal pCPF As String) As Boolean Dim i As Integer Dim vetor(10) As Integer Dim dv_1 As Integer Dim dv_2 As Integer Dim Soma As Single Dim xCpf As String Dim x As Integer 'VERIFICA SE É DIGITADO UM CARACTER INVALIDO For i = 1 To 11 xCpf = Mid(pCPF, i, 1) If Not IsNumeric(xCpf) Then MsgBox "CPF nao pode conter strings, é inválido!", vbInformation + vbOKOnly, "Erro de Preenchimento" ErroCPF = True Exit Function End If Next'VERIFICA SE SAO DIGITADOS NUMEROS REPETIDOS If Len(pCPF) = 11 Then For i = 0 To 10 vetor(i) = Mid$(pCPF, i + 1, 1) If vetor(i) = vetor(i + 1) Then MsgBox "CPF nao pode conter strings, é inválido!", vbInformation + vbOKOnly, "Erro de Preenchimento" ErroCPF = True Exit Function End If Next End If 'VALIDA CPF If Len(pCPF) = 11 Then For i = 0 To 10 vetor(i) = Mid$(pCPF, i + 1, 1) Next Soma = (1 * vetor(0)) + (2 * vetor(1)) + (3 * vetor(2)) + (4 * vetor(3)) + (5 * vetor(4)) + (6 * vetor(5)) + (7 * vetor(6)) + (8 * vetor(7)) + (9 * vetor(8)) dv_1 = Soma Mod 11 If dv_1 = 10 Then dv_1 = 0 End If If vetor(9) = dv_1 Then Soma = (1 * vetor(1)) + (2 * vetor(2)) + (3 * vetor(3)) + (4 * vetor(4)) + (5 * vetor(5)) + (6 * vetor(6)) + (7 * vetor(7)) + (8 * vetor(8)) + (9 * vetor(9)) dv_2 = Soma Mod 11 If dv_2 = 10 Then dv_2 = 0 End If If vetor(10) = dv_2 Then ErroCPF = False Else MsgBox "Dígito verificador '" & vetor(10) & "' errado!", vbInformation + vbOKOnly, "Erro de Preenchimento" ErroCPF = True End If Else MsgBox "Dígito verificador '" & vetor(9) & "' errado!", vbInformation + vbOKOnly, "Erro de Preenchimento" ErroCPF = True End If Else MsgBox "Tamanho do CIC inválido!", vbInformation + vbOKOnly, "Erro de Preenchimento" ErroCPF = True End IfEnd Function

Compartilhar este post


Link para o post
Compartilhar em outros sites

Malz ae cara eu inverti os paramêtros:

for x=0 to 9   if pcpf = string(11,cstr(x)) then          'cpf inválido   end ifnext x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigada Luiz, funciona direitinho!!!Pros amigos que ainda quiserem aproveitar é só inserir naquela fnction mais essa parte: 'VERIFICA SE SAO DIGITADOS NUMEROS REPETIDOS For X = 0 To 9 If pCPF = String(11, CStr(X)) Then 'cpf MsgBox "CPF nao pode conter sequência de números repetidos!", vbInformation + vbOKOnly, "Erro de Preenchimento" ErroCPF = True Exit Function End If Next XObrigada a todos, valee mais uma vez Luiz!Bjs,Lu

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.