Validar campo com número do CNS
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Usuário Luiz:
Boa noite.
Será que alguém já conseguiu validar um campo com número do Cartão Nacional de Saúde? Já pesquisei sobre o assunto em outros fóruns, porém em Access não encontrei nada.
Encontrei um código em JAVA, porém não entendi muita coisa. Preciso de ajuda!
public boolean isValid(String s) {
if (s.matches("[1-2]\\d{10}00[0-1]\\d") || s.matches("[7-9]\\d{14}")) {
return somaPonderada(s) % 11 == 0;
}
return false;
}
private int somaPonderada(String s) {
char[] cs = s.toCharArray();
int soma = 0;
for (int i = 0; i < cs.length; i++) {
soma += Character.digit(cs[i], 10) * (15 - i);
}
return soma;
}
Suporte:
Luiz, temos o cartão provisório e o cartão definitivo que usa o número do PIS (primeiros 11 dígitos). Segue o código abaixo que montei e que valida também o cartão provisório.
Faça o login aqui para ter acesso ao código.
Usando a função:
if fncValidaCns("175071486530018") then
'Cartão válido
else
'Cartão rejeitado
end if
Nota 1: É necessário realizar teste com os vários números que você tem certeza que são válidos, inclusive com os números provisórios.
Nota 2: No código JAVA apresentado, o rapaz usou o Regex (Regular-Expression). Para isso é preciso ativar a referência “Microsoft VBScript Regular Expression 5.5” que está em “c:\Windows\system32\vbscript.dll”. Preferi não usar o Regex, apesar do código ficar bem mais reduzido, para não ter que ativar esta referência no VBA. Segue um link do meu artigo, caso queira ver um exemplo usando o Regex no Access.
Aguardo o teste.
Usuário Luiz :
Obrigado Avelino, deu certo. Já havia vasculhado por alguns fóruns, mas sem retorno. Validação de CPF e CNPJ é o que mais se encontra, mas não o do CNS.
Para facilitar para outros usuários que um dia possam se deparar com a mesma situação, disponibilizo o exemplo.
Suporte:
Luiz, obrigado pelo feedback e sucesso! Seu exemplo está abaixo:
Download
4 comentário(s) LUIZ NETO 12/02/2021 08:03:13 Boa tarde Avelino! Problema resolvido conforme vossa orientação! Grato pela vossa atenção "GRANDE MESTRE". Avelino Sampaio 12/02/2021 01:02:51 Luiz, acrescente a seguinte linha de tratamento de erro no incio do código: ON ERROR RESUME NEXT Sucesso! LUIZ NETO 10/02/2021 16:32:28 Validação CNS. Caso você insira mais algum campo no formulário e deixar o campo do CNS vazio, ao dar tab ou enter para pular de campo retorna o seguinte erro: Erro em tempo de execução 94: Uso de null inválido. LUIZ NETO 10/02/2021 16:32:24 Validação CNS. Caso você insira mais algum campo no formulário e deixar o campo do CNS vazio, ao dar tab ou enter para pular de campo retorna o seguinte erro: Erro em tempo de execução 94: Uso de null inválido. |