Ajuda - Busca - Membros - Calendário
Versão Completa: Validar CPF em BD Access
iMasters Fóruns > Gerenciamento de Banco de Dados > Access
Wandir
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!!!
vagner.net
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.
Fernando C
Wandir, acho q essa dica deve t ajudar; da 1 olhada aqui:
http://scriptbrasil.com.br/forum/index.php?showtopic=100677;
boa sorte e até +..
Wandir
Opa galera, muito obrigado pela ajuda de todos!!

Aqui, o que consegui:
CODE
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!!!
SMAC
QUOTE(Wandir @ 31/05/2007 - 15:22) *
Opa galera, muito obrigado pela ajuda de todos!!

Aqui, o que consegui:
CODE
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
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2008 Invision Power Services, Inc.