MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

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

    luizzlcs
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  luizzlcs em 23/9/2015, 14:56

    Olá,

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

    Respeito às Regras 100%

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

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

    Mensagem  Fernando Bueno em 23/9/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
    [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS 16rzeq
    luizzlcs
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  luizzlcs em 23/9/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
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  luizzlcs em 23/9/2015, 20:50

    Estou pesquisando +
    Fernando Bueno
    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  Fernando Bueno em 23/9/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
    [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS 16rzeq
    luizzlcs
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  luizzlcs em 24/9/2015, 02:06

    Obrigado pela sugestão fernando! vou verificar.
    luizzlcs
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

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

    Mensagem  luizzlcs em 24/9/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
    Avelino Sampaio
    Developer
    Developer

    Respeito às Regras 100%

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

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

    Mensagem  Avelino Sampaio em 24/9/2015, 09:59

    luizzlcs
    luizzlcs
    Intermediário
    Intermediário

    Respeito às Regras 100%

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

    [Resolvido]Validar, autenticar Cartão Nacional de Saúde-CNS Empty Validando o CNS (Número do cartão nacional de Saúde)

    Mensagem  luizzlcs em 24/9/2015, 17:52

    Obrigado Avelino,

    Atividade concluída.

    Conteúdo patrocinado

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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 18/6/2019, 18:03