Ir para conteúdo

Arquivado

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

Wandir

Validar CPF em BD Access

Recommended Posts

Olá!

 

Estou aprofundando meus conhecimentos em Banco de Dados Access criando um sistema de matrículas e cadastros de alunos, turmas e etc. Para ter mais segurança no BD, gostaria de que, ao cadastrar um novo aluno, o Access validasse o CPF do mesmo.

 

Já tentei criar um módulo e colocar as "regras" lá, mas não funfa.

 

Quando o BD estiver finalizado, eu publico ele aqui, pra galera ver como ficou!

 

Abraços!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu ja fiz algo parecido, criei uma função no VBA e executava ela no evento de um botão antes de inserir no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa galera, muito obrigado pela ajuda de todos!!

 

Aqui, o que consegui:

Function DVCPF(CPF As String) As String'Rotina alterada por Dalvo Aragão Junior'Data: 15/02/98'Site: www.freeespace.com.br/sc/estoqueDim lngSoma, lngInteiro As LongDim intNumero, intMais, I, intResto As IntegerDim intDig1, intDig2 As IntegerDim strDigVer, strcampo, strCaracter, StrConf As StringDim dblDivisao As DoublelngSoma = 0intNumero = 0intMais = 0strcampo = Left(CPF, 9)strDigVer = Right(CPF, 2)For I = 2 To 10strCaracter = Right(strcampo, I - 1)intNumero = Left(strCaracter, 1)intMais = intNumero * IlngSoma = lngSoma + intMaisNext IdblDivisao = lngSoma / 11lngInteiro = Int(dblDivisao) * 11intResto = lngSoma - lngInteiroIf intResto = 0 Or intResto = 1 ThenintDig1 = 0ElseintDig1 = 11 - intRestoEnd Ifstrcampo = strcampo & intDig1lngSoma = 0intNumero = 0intMais = 0For I = 2 To 11strCaracter = Right(strcampo, I - 1)intNumero = Left(strCaracter, 1)intMais = intNumero * IlngSoma = lngSoma + intMaisNext IdblDivisao = lngSoma / 11lngInteiro = Int(dblDivisao) * 11intResto = lngSoma - lngInteiroIf intResto = 0 Or intResto = 1 ThenintDig2 = 0ElseintDig2 = 11 - intRestoEnd IfStrConf = intDig1 & intDig2DVCPF = StrConfIf DVCPF = strDigVer ThenMsgBox "CPF válido!", vbInformationElseMsgBox "CPF inválido", vbCriticalDoCmd.CancelEventEnd IfEnd Function
Isso deve ser colocado em um módulo (eu salvei com o nome VERCPF)

 

Nas propriedades do campo CPF (NOTA: No Formulário, hehehe eu estava tentando na Tabela) você deve adicionar na guia Evento, a opção Após atualizar =DVCPF([CPF]) como na imagem abaixo:

 

http://img517.imageshack.us/img517/3449/fucaooc5.jpg

 

Usem e abusem! Sem moderação!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa galera, muito obrigado pela ajuda de todos!!

 

Aqui, o que consegui:

Function DVCPF(CPF As String) As String

'Rotina alterada por Dalvo Aragão Junior
'Data: 15/02/98
'Site: www.freeespace.com.br/sc/estoque

Dim lngSoma, lngInteiro As Long
Dim intNumero, intMais, I, intResto As Integer
Dim intDig1, intDig2 As Integer
Dim strDigVer, strcampo, strCaracter, StrConf As String
Dim dblDivisao As Double
lngSoma = 0
intNumero = 0
intMais = 0
strcampo = Left(CPF, 9)
strDigVer = Right(CPF, 2)
For I = 2 To 10
strCaracter = Right(strcampo, I - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * I
lngSoma = lngSoma + intMais
Next I
dblDivisao = lngSoma / 11
lngInteiro = Int(dblDivisao) * 11
intResto = lngSoma - lngInteiro
If intResto = 0 Or intResto = 1 Then
intDig1 = 0
Else
intDig1 = 11 - intResto
End If
strcampo = strcampo & intDig1
lngSoma = 0
intNumero = 0
intMais = 0
For I = 2 To 11
strCaracter = Right(strcampo, I - 1)
intNumero = Left(strCaracter, 1)
intMais = intNumero * I
lngSoma = lngSoma + intMais
Next I
dblDivisao = lngSoma / 11
lngInteiro = Int(dblDivisao) * 11
intResto = lngSoma - lngInteiro
If intResto = 0 Or intResto = 1 Then
intDig2 = 0
Else
intDig2 = 11 - intResto
End If
StrConf = intDig1 & intDig2
DVCPF = StrConf

If DVCPF = strDigVer Then
MsgBox "CPF válido!", vbInformation
Else
MsgBox "CPF inválido", vbCritical
DoCmd.CancelEvent
End If

End Function
Isso deve ser colocado em um módulo (eu salvei com o nome VERCPF)

 

Nas propriedades do campo CPF (NOTA: No Formulário, hehehe eu estava tentando na Tabela) você deve adicionar na guia Evento, a opção Após atualizar =DVCPF([CPF]) como na imagem abaixo:

 

http://img517.imageshack.us/img517/3449/fucaooc5.jpg

 

Usem e abusem! Sem moderação!!!

 

 

PRECISO TAMBEM PARA CNPJ.... PODE ME AJUDAR

 

DESJA OBRIGADO

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Felipe,

 

Tenta este...:

 

 

Private Sub cpfCommand_Click()

On Error GoTo Err_ValidarCPF

Dim strCPF As String
strCPF = InputBox("Informe o CPF:")
MsgBox ValidarCPF(strCPF), vbInformation, "Validação CPF"


Exit_ValidarCPF:
Exit Sub

Err_ValidarCPF:
MsgBox "Erro número: " & Err.Number & vbLf & vbLf & Err.Description, vbCritical, "Validação CPF"

Resume Exit_ValidarCPF

End Sub

Public Function ValidarCPF(sCPF As String) As String
Dim d1 As Integer
Dim d2 As Integer
Dim d3 As Integer
Dim d4 As Integer
Dim d5 As Integer
Dim d6 As Integer
Dim d7 As Integer
Dim d8 As Integer
Dim d9 As Integer
Dim d10 As Integer
Dim d11 As Integer
Dim DV1 As Integer
Dim DV2 As Integer
Dim UltDig As Integer
Dim VerificarCPF As String

If Len(sCPF) < 11 Then 'Completa com zeros à esquerda caso não esteja com os 11 digitos
sCPF = String(11 - Len(sCPF), "0") & sCPF
End If

UltDig = Len(sCPF) 'Pega a posição do último dígito

If sCPF = "00000000000" Then 'Sai da função caso a célula esteja vazia
VerificarCPF = ""
Exit Function
End If

'Pega cada dígito do CPF informado e coloca nas variáveis específicas
d1 = CInt(Mid(sCPF, UltDig - 10, 1))
d2 = CInt(Mid(sCPF, UltDig - 9, 1))
d3 = CInt(Mid(sCPF, UltDig - 8, 1))
d4 = CInt(Mid(sCPF, UltDig - 7, 1))
d5 = CInt(Mid(sCPF, UltDig - 6, 1))
d6 = CInt(Mid(sCPF, UltDig - 5, 1))
d7 = CInt(Mid(sCPF, UltDig - 4, 1))
d8 = CInt(Mid(sCPF, UltDig - 3, 1))
d9 = CInt(Mid(sCPF, UltDig - 2, 1))
d10 = CInt(Mid(sCPF, UltDig - 1, 1)) '<----- Aqui são os DVs informados
d11 = CInt(Mid(sCPF, UltDig, 1)) '<----- no CPF analizado
'----------- Aqui é executado o calculo para obter os digitos verificadores corretos

DV1 = d1 + (d2 * 2) + (d3 * 3) + (d4 * 4) + (d5 * 5) + (d6 * 6) + (d7 * 7) + (d8 * 8) + (d9 * 9)
DV1 = DV1 Mod 11 'Obtem o resto

'se o resto for igual a 10 altera pra 0
If DV1 = 10 Then
DV1 = 0
End If

DV2 = d2 + (d3 * 2) + (d4 * 3) + (d5 * 4) + (d6 * 5) + (d7 * 6) + (d8 * 7) + (d9 * 8) + (DV1 * 9)
DV2 = DV2 Mod 11 'Obtem o resto


If DV2 = 10 Then 'se o resto for igual a 10 altera pra 0
DV2 = 0
End If

'---------- Fazendo a comparação dos dvs informados -------
If d10 = DV1 And d11 = DV2 Then
VerificarCPF = "CPF Válido"
Else
VerificarCPF = "CPF Inválido"
End If

ValidarCPF = VerificarCPF

End Function[/Code]

 

 

 

Fonte: Clique aqui

 

 

Sem mais,

 

Julien Sorel

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Herbert,

 

Segue link que talvez o ajude...:

 

http://ef3cinco.wordpress.com/2011/08/16/como-validar-digito-validador-de-cpf-utilizando-vba/

 

 

 

 

 

Sem mais,

 

Julien Sorel

_________________________________________________________________

 

ef3cinco.worpress.com | Programação - não importa a linguagem...

 

ememestore.com.br | Onde você encontra...

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.