Olá , partilho exemplo de validação do Cartão de Cidadão Português.
Adaptado para Ms Access a partir deste manual.
Abraço
Adaptado para Ms Access a partir deste manual.
- Código:
Function ValidarNumeroDocumentoCC(numeroDocumento As String)
'===============================================================================================================
'Álvaro Teixeira 2014 - Validação de Número de Documento do Cartão de Cidadão - Portugal
'Versão 1.1 (141103)
'Adaptado para Ms Access a partir de http://www.cartaodecidadao.pt/images/stories/Algoritmo_Num_Documento_CC.pdf
'Exemplo: ValidarNumeroDocumentoCC("000000000zz4")
'===============================================================================================================
ValidarNumeroDocumentoCC = False
ccDigito = ""
ccNum = 0
ccSoma = 0
numeroDocumento = UCase(Replace(numeroDocumento, " ", "")) 'retira espaços, converte para maiuscula
If Len(numeroDocumento) <> 12 Then '
MsgBox "Tamanho inválido para número de documento.", vbInformation, ""
Exit Function
End If
For i = Len(numeroDocumento) To 1 Step -1
ccDigito = Mid(numeroDocumento, i, 1)
If Asc(ccDigito) > 47 And Asc(ccDigito) < 58 Then 'numero [0..9]
ccNum = ccDigito
Else
If Asc(ccDigito) > 64 And Asc(ccDigito) < 91 Then 'numero [A..Z]
ccNum = Asc(ccDigito) - 55 ' converte para valor
Else
MsgBox "Dígito inválido no número de documento.", vbInformation, ""
Exit Function
End If
End If
If Int(13 - i) Mod 2 = 0 Then 'para ober o numero da posição a contar da direita e verificar se é par
ccNum = ccNum * 2
If ccNum >= 10 Then ccNum = ccNum - 9
End If
ccSoma = ccSoma + ccNum
Next
If ccSoma Mod 10 = 0 Then ValidarNumeroDocumentoCC = True
End Function
Abraço
- Anexos
- Valida_Cartao_Cidadao_v1_1.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (18 Kb) Baixado 183 vez(es)
Última edição por ahteixeira em 22/4/2017, 21:30, editado 2 vez(es)