MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Compartilhe

    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 85
    Registrado : 26/07/2011

    [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  luizzlcs em Qua 23 Set 2015, 14:56

    Olá,

    Alguém sabe como validar o número do cartão nacional de saúde?

    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1819
    Registrado : 13/04/2012

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  Fernando Bueno em Qua 23 Set 2015, 20:46

    Boa tarde;

    Numero de cartão nacional de saúde desconheço, aguarde para vermos se algum colega

    ja teve essa experiência.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]

    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 85
    Registrado : 26/07/2011

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  luizzlcs em Qua 23 Set 2015, 20:50

    Encontrei o código em Java, porém não Manjo nada de Java.
    Rotina de validação de Números que iniciam com “1” ou “2”


    public boolean validaCns(String cns){
    if (cns.trim().length() != 15){
    return(false);
    }

    float soma;
    float resto, dv;
    String pis = new String("");
    String resultado = new String("");
    pis = cns.substring(0,11);

    soma = ((Integer.valueOf(pis.substring(0,1)).intValue()) * 15) +
    ((Integer.valueOf(pis.substring(1,2)).intValue()) * 14) +
    ((Integer.valueOf(pis.substring(2,3)).intValue()) * 13) +
    ((Integer.valueOf(pis.substring(3,4)).intValue()) * 12) +
    ((Integer.valueOf(pis.substring(4,5)).intValue()) * 11) +
    ((Integer.valueOf(pis.substring(5,6)).intValue()) * 10) +
    ((Integer.valueOf(pis.substring(6,7)).intValue()) * 9) +
    ((Integer.valueOf(pis.substring(7,Cool).intValue()) * Cool +
    ((Integer.valueOf(pis.substring(8,9)).intValue()) * 7) +
    ((Integer.valueOf(pis.substring(9,10)).intValue()) * 6) +
    ((Integer.valueOf(pis.substring(10,11)).intValue()) * 5);

    resto = soma % 11;
    dv = 11 - resto;

    if (dv == 11){
    dv = 0;
    }

    if (dv == 10){
    soma = ((Integer.valueOf(pis.substring(0,1)).intValue()) * 15) +
    ((Integer.valueOf(pis.substring(1,2)).intValue()) * 14) +
    ((Integer.valueOf(pis.substring(2,3)).intValue()) * 13) +
    ((Integer.valueOf(pis.substring(3,4)).intValue()) * 12) +
    ((Integer.valueOf(pis.substring(4,5)).intValue()) * 11) +
    ((Integer.valueOf(pis.substring(5,6)).intValue()) * 10) +
    ((Integer.valueOf(pis.substring(6,7)).intValue()) * 9) +
    ((Integer.valueOf(pis.substring(7,Cool).intValue()) * Cool +
    ((Integer.valueOf(pis.substring(8,9)).intValue()) * 7) +
    ((Integer.valueOf(pis.substring(9,10)).intValue()) * 6) +
    ((Integer.valueOf(pis.substring(10,11)).intValue()) * 5) + 2;

    resto = soma % 11;
    dv = 11 - resto;
    resultado = pis + "001" + String.valueOf((int)dv);
    }else {
    resultado = pis + "000" + String.valueOf((int)dv);
    }

    if (! cns.equals(resultado)){
    return(false);
    }else {
    return(true);}
    }




    Rotina de validação de Números que iniciam com “7”, “8” ou “9”




    public boolean validaCnsProv(String cns){
    if (cns.trim().length() != 15){
    return(false);
    }

    float dv;
    float resto,soma;

    soma = ((Integer.valueOf(cns.substring(0,1)).intValue()) * 15) +
    ((Integer.valueOf(cns.substring(1,2)).intValue()) * 14) +
    ((Integer.valueOf(cns.substring(2,3)).intValue()) * 13) +
    ((Integer.valueOf(cns.substring(3,4)).intValue()) * 12) +
    ((Integer.valueOf(cns.substring(4,5)).intValue()) * 11) +
    ((Integer.valueOf(cns.substring(5,6)).intValue()) * 10) +
    ((Integer.valueOf(cns.substring(6,7)).intValue()) * 9) +
    ((Integer.valueOf(cns.substring(7,Cool).intValue()) * Cool +
    ((Integer.valueOf(cns.substring(8,9)).intValue()) * 7) +
    ((Integer.valueOf(cns.substring(9,10)).intValue()) * 6) +
    ((Integer.valueOf(cns.substring(10,11)).intValue()) * 5) +
    ((Integer.valueOf(cns.substring(11,12)).intValue()) * 4) +
    ((Integer.valueOf(cns.substring(12,13)).intValue()) * 3) +
    ((Integer.valueOf(cns.substring(13,14)).intValue()) * 2) +
    ((Integer.valueOf(cns.substring(14,15)).intValue()) * 1);

    resto = soma % 11;

    if (resto != 0){
    return(false);
    }else {
    return(true);}
    }


    Observações:

    Não existe máscara para o CNS nem para o Número Provisório. O número que aparece no cartão de forma separada (898 0000 0004 3208) deverá ser digitado sem as separações.
    O 16º número que aparece no Cartão é o número da via do cartão, não é deverá ser digitado.

    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 85
    Registrado : 26/07/2011

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  luizzlcs em Qua 23 Set 2015, 20:50

    Estou pesquisando +

    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1819
    Registrado : 13/04/2012

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  Fernando Bueno em Qua 23 Set 2015, 21:03

    Nunca usei mais ja ouvi dizer que esse programa Java to VB Converter (Free Edition)

    faz esse trabalho pesado.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]

    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 85
    Registrado : 26/07/2011

    :D

    Mensagem  luizzlcs em Qui 24 Set 2015, 02:06

    Obrigado pela sugestão fernando! vou verificar.

    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 85
    Registrado : 26/07/2011

    Convertido

    Mensagem  luizzlcs em Qui 24 Set 2015, 02:27

    fiz a conversão

    Acho que não ficou bem ajustado, se alguém conseguir ajustar eu agradeço.


    CÓDIGO JÁVA

    Código:
     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;
    }

    CÓDIGO JAVA CONVERTIDO PARA VB

    Código:
    Public Overridable Function isValid(ByVal s As String) As Boolean
    If s.matches("[1-2]\d{10}00[0-1]\d") OrElse s.matches("[7-9]\d{14}") Then
    Return somaPonderada(s) Mod 11 = 0
    End If
    Return False
    End Function

    Private Function somaPonderada(ByVal s As String) As Integer
    Dim cs() As Char = s.ToCharArray()
    Dim soma As Integer = 0
    For i As Integer = 0 To cs.Length - 1
    soma += Char.digit(cs(i), 10) * (15 - i)
    Next i
    Return soma
    End Function





    Desemvolvi um aplicativo para uma operadora de planos odontológicos, agora me deparei com o desefio de validar o campo CNS, se alguém poder me ajudar, será a solução, confesso que estacionei.

    Avelino Sampaio
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3348
    Registrado : 04/04/2010

    Re: [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS

    Mensagem  Avelino Sampaio em Qui 24 Set 2015, 09:59

    Luiz,

    veja esta minha sugestão:

    [Você precisa estar registrado e conectado para ver este link.]

    Sucesso!


    .................................................................................
    ============ Quer aprender Access em alta velocidade ? ============

    || [Você precisa estar registrado e conectado para ver esta imagem.] Acesse o site UsandoAccess.com.br e veja um ótimo kit de ensino que tenho para você.

    ===========================================================

    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 85
    Registrado : 26/07/2011

    Validando o CNS (Número do cartão nacional de Saúde)

    Mensagem  luizzlcs em Qui 24 Set 2015, 17:52

    Obrigado Avelino,

    Atividade concluída.

      Data/hora atual: Qua 07 Dez 2016, 18:15