CONVERTER FUN?ÃO JAVASCRIPT PARA VB/VBA
Bom dia pessoal!
Preciso de uma ajuda!
Preciso converter essas duas funções do DATASUS que servem para validação de Cartão SUS.
1 - A primeira é para cartões antigos que começam com os números 1 e 2
2 - A segunda é para os cartões mais recentes que começam com 7,8 e 9
------------------------------------------------------------------------------------------------
Rotina (JAVASCRIPT) de validação de Números que iniciam com “1†ou “2â€
------------------------------------------------------------------------------------------------
function validaCNS(vlrCNS) {
// Formulário que contem o campo CNS
var soma = new Number;
var resto = new Number;
var dv = new Number;
var pis = new String;
var resultado = new String;
var tamCNS = vlrCNS.length;
if ((tamCNS) != 15) {
alert([Ô]Numero de CNS invalido[Ô]);
return false;
}
pis = vlrCNS.substring(0,11);
soma = (((Number(pis.substring(0,1))) * 15) +
((Number(pis.substring(1,2))) * 14) +
((Number(pis.substring(2,3))) * 13) +
((Number(pis.substring(3,4))) * 12) +
((Number(pis.substring(4,5))) * 11) +
((Number(pis.substring(5,6))) * 10) +
((Number(pis.substring(6,7))) * 9) +
((Number(pis.substring(7,8))) * 8) +
((Number(pis.substring(8,9))) * 7) +
((Number(pis.substring(9,10))) * 6) +
((Number(pis.substring(10,11))) * 5));
resto = soma % 11;
dv = 11 - resto;
if (dv == 11) {
dv = 0;
}
if (dv == 10) {
soma = (((Number(pis.substring(0,1))) * 15) +
((Number(pis.substring(1,2))) * 14) +
((Number(pis.substring(2,3))) * 13) +
((Number(pis.substring(3,4))) * 12) +
((Number(pis.substring(4,5))) * 11) +
((Number(pis.substring(5,6))) * 10) +
((Number(pis.substring(6,7))) * 9) +
((Number(pis.substring(7,8))) * 8) +
((Number(pis.substring(8,9))) * 7) +
((Number(pis.substring(9,10))) * 6) +
((Number(pis.substring(10,11))) * 5) + 2);
resto = soma % 11;
dv = 11 - resto;
resultado = pis + [Ô]001[Ô] + String(dv);
} else {
resultado = pis + [Ô]000[Ô] + String(dv);
}
if (vlrCNS != resultado) {
alert([Ô]Numero de CNS invalido[Ô]);
return false;
} else {
alert([Ô]Numero de CNS válido[Ô]);
return true;
}
}
-----------------------------------------------------------------------------------------------------
Rotina (JAVASCRIPT) de validação de Números que iniciam com “7†ou “8†ou [Ô]9[Ô]
--------------------------------------------------------------------------------------------------------
function ValidaCNS_PROV(Obj)
{
var pis;
var resto;
var dv;
var soma;
var resultado;
var result;
result = 0;
pis = Obj.value.substring(0,15);
if (pis == [Ô][Ô])
{
return false
}
if ( (Obj.value.substring(0,1) != [Ô]7[Ô]) && (Obj.value.substring(0,1) != [Ô]8[Ô]) && (Obj.value.substring(0,1) != [Ô]9[Ô]) )
{
alert([Ô]Atenção! Número Provisório inválido![Ô]);
return false
}
soma = ( (parseInt(pis.substring( 0, 1),10)) * 15)
+ ((parseInt(pis.substring( 1, 2),10)) * 14)
+ ((parseInt(pis.substring( 2, 3),10)) * 13)
+ ((parseInt(pis.substring( 3, 4),10)) * 12)
+ ((parseInt(pis.substring( 4, 5),10)) * 11)
+ ((parseInt(pis.substring( 5, 6),10)) * 10)
+ ((parseInt(pis.substring( 6, 7),10)) * 9)
+ ((parseInt(pis.substring( 7, 8),10)) * 8)
+ ((parseInt(pis.substring( 8, 9),10)) * 7)
+ ((parseInt(pis.substring( 9,10),10)) * 6)
+ ((parseInt(pis.substring(10,11),10)) * 5)
+ ((parseInt(pis.substring(11,12),10)) * 4)
+ ((parseInt(pis.substring(12,13),10)) * 3)
+ ((parseInt(pis.substring(13,14),10)) * 2)
+ ((parseInt(pis.substring(14,15),10)) * 1);
resto = soma % 11;
if (resto == 0)
{
return true;
}
else
{
alert([Ô]Atenção! Número Provisório inválido![Ô]);
return false;
}
}
Se precisar de números válidos para testes segue aqui
----------------------------------------------------------------------
100875053790018
102246835400006
206046387730009
206755471690007
700403929112842
700500908041454
898002392643433
898002606360658
980016000257118
980016296787176
Ficarei muito grato se alguém puder me ajudar convertendo de preferência para VBA.
Preciso de uma ajuda!
Preciso converter essas duas funções do DATASUS que servem para validação de Cartão SUS.
1 - A primeira é para cartões antigos que começam com os números 1 e 2
2 - A segunda é para os cartões mais recentes que começam com 7,8 e 9
------------------------------------------------------------------------------------------------
Rotina (JAVASCRIPT) de validação de Números que iniciam com “1†ou “2â€
------------------------------------------------------------------------------------------------
function validaCNS(vlrCNS) {
// Formulário que contem o campo CNS
var soma = new Number;
var resto = new Number;
var dv = new Number;
var pis = new String;
var resultado = new String;
var tamCNS = vlrCNS.length;
if ((tamCNS) != 15) {
alert([Ô]Numero de CNS invalido[Ô]);
return false;
}
pis = vlrCNS.substring(0,11);
soma = (((Number(pis.substring(0,1))) * 15) +
((Number(pis.substring(1,2))) * 14) +
((Number(pis.substring(2,3))) * 13) +
((Number(pis.substring(3,4))) * 12) +
((Number(pis.substring(4,5))) * 11) +
((Number(pis.substring(5,6))) * 10) +
((Number(pis.substring(6,7))) * 9) +
((Number(pis.substring(7,8))) * 8) +
((Number(pis.substring(8,9))) * 7) +
((Number(pis.substring(9,10))) * 6) +
((Number(pis.substring(10,11))) * 5));
resto = soma % 11;
dv = 11 - resto;
if (dv == 11) {
dv = 0;
}
if (dv == 10) {
soma = (((Number(pis.substring(0,1))) * 15) +
((Number(pis.substring(1,2))) * 14) +
((Number(pis.substring(2,3))) * 13) +
((Number(pis.substring(3,4))) * 12) +
((Number(pis.substring(4,5))) * 11) +
((Number(pis.substring(5,6))) * 10) +
((Number(pis.substring(6,7))) * 9) +
((Number(pis.substring(7,8))) * 8) +
((Number(pis.substring(8,9))) * 7) +
((Number(pis.substring(9,10))) * 6) +
((Number(pis.substring(10,11))) * 5) + 2);
resto = soma % 11;
dv = 11 - resto;
resultado = pis + [Ô]001[Ô] + String(dv);
} else {
resultado = pis + [Ô]000[Ô] + String(dv);
}
if (vlrCNS != resultado) {
alert([Ô]Numero de CNS invalido[Ô]);
return false;
} else {
alert([Ô]Numero de CNS válido[Ô]);
return true;
}
}
-----------------------------------------------------------------------------------------------------
Rotina (JAVASCRIPT) de validação de Números que iniciam com “7†ou “8†ou [Ô]9[Ô]
--------------------------------------------------------------------------------------------------------
function ValidaCNS_PROV(Obj)
{
var pis;
var resto;
var dv;
var soma;
var resultado;
var result;
result = 0;
pis = Obj.value.substring(0,15);
if (pis == [Ô][Ô])
{
return false
}
if ( (Obj.value.substring(0,1) != [Ô]7[Ô]) && (Obj.value.substring(0,1) != [Ô]8[Ô]) && (Obj.value.substring(0,1) != [Ô]9[Ô]) )
{
alert([Ô]Atenção! Número Provisório inválido![Ô]);
return false
}
soma = ( (parseInt(pis.substring( 0, 1),10)) * 15)
+ ((parseInt(pis.substring( 1, 2),10)) * 14)
+ ((parseInt(pis.substring( 2, 3),10)) * 13)
+ ((parseInt(pis.substring( 3, 4),10)) * 12)
+ ((parseInt(pis.substring( 4, 5),10)) * 11)
+ ((parseInt(pis.substring( 5, 6),10)) * 10)
+ ((parseInt(pis.substring( 6, 7),10)) * 9)
+ ((parseInt(pis.substring( 7, 8),10)) * 8)
+ ((parseInt(pis.substring( 8, 9),10)) * 7)
+ ((parseInt(pis.substring( 9,10),10)) * 6)
+ ((parseInt(pis.substring(10,11),10)) * 5)
+ ((parseInt(pis.substring(11,12),10)) * 4)
+ ((parseInt(pis.substring(12,13),10)) * 3)
+ ((parseInt(pis.substring(13,14),10)) * 2)
+ ((parseInt(pis.substring(14,15),10)) * 1);
resto = soma % 11;
if (resto == 0)
{
return true;
}
else
{
alert([Ô]Atenção! Número Provisório inválido![Ô]);
return false;
}
}
Se precisar de números válidos para testes segue aqui
----------------------------------------------------------------------
100875053790018
102246835400006
206046387730009
206755471690007
700403929112842
700500908041454
898002392643433
898002606360658
980016000257118
980016296787176
Ficarei muito grato se alguém puder me ajudar convertendo de preferência para VBA.
Não vou te dar mastigado porque iria dar um bom trabalho converter tudo isso. E não seria uma dúvida, e sim uma conversão completa de código...
Declaração de um inteiro em VBA:
Dim variavel as Integer
Declaracao de um decimal em VBA:
Dim variavel as Single
Função substring em VBA é Mid()
Conversão para inteiro é cInt()
% (pra pegar o resto) é Mod
e Alert é MsgBox()
Abraços!
Declaração de um inteiro em VBA:
Dim variavel as Integer
Declaracao de um decimal em VBA:
Dim variavel as Single
Função substring em VBA é Mid()
Conversão para inteiro é cInt()
% (pra pegar o resto) é Mod
e Alert é MsgBox()
Abraços!
Faça seu login para responder