Validação de Número de Documento do Cartão de Cidadão - Portugal

Destinado a postagens de exemplos em Microsoft Access (código aberto) por todos os utilizadores cadastrados.
Não são permitidos exemplos sem acesso à estrutura.
Não são aceitos exemplos com a extensão em .EXE

Moderador: Avelino Sampaio

Avatar do usuário
ahteixeira
Mensagens: 38
Registrado em: 07 Jun 2015, 18:51
Localização: Porto - Portugal

Validação de Número de Documento do Cartão de Cidadão - Portugal

Mensagempor ahteixeira » 07 Jun 2015, 19:04

Olá , partilho exemplo de validação do Cartão de Cidadão Português.
Adaptado para Ms Access a partir de deste manual.

Código: Selecionar todos

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

Todas as contribuições ou sugestões são bem-vindas.
Abraço
Você deve estar registrado e autenticado para ter acesso ao arquivo anexo.
Última edição por ahteixeira em 24 Mai 2017, 02:18, editado 4 vezes no total.

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.


Adampt
Mensagens: 38
Registrado em: 18 Ago 2015, 07:45

Re: Validação de Número de Documento do Cartão de Cidadão - Portugal

Mensagempor Adampt » 22 Abr 2016, 10:00

Muito bom.

E para validação do BI (antigo)? Há alguma coisa?

Avatar do usuário
ahteixeira
Mensagens: 38
Registrado em: 07 Jun 2015, 18:51
Localização: Porto - Portugal

Re: Validação de Número de Documento do Cartão de Cidadão - Portugal

Mensagempor ahteixeira » 02 Mai 2016, 16:34

Olá Adampt, obrigado pelo retorno.

Acho que no link abaixo tem o que pretende:
http://www.maximoaccess.com/t9344-valid ... e-portugal

Abraço

Disable adblock

Precisamos do seu apoio. Faca uma doacao para o site atraves do Paypal.



Voltar para “Biblioteca de exemplos Ms Access”

Quem está online

Usuários neste fórum: Nenhum usuário registrado e 1 visitante