Fábio Spies Postado Outubro 25, 2007 Denunciar Share Postado Outubro 25, 2007 Validar CGC/CPF - Existe como no crystal 8.5 ? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Outubro 25, 2007 Denunciar Share Postado Outubro 25, 2007 existe sim. aqui http://scriptbrasil.com.br/forum/index.php?showtopic=104004 tem um exemplo da funcao em visual basic. é so você copiar no Crystal, colocar em Basic Syntax e ai pode precisar adaptar algumas coisas pro Crystal entender, mas você não deve ter dificuldades.mas qualquer duvida poste. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Fábio Spies Postado Outubro 25, 2007 Autor Denunciar Share Postado Outubro 25, 2007 (editado) Boa idéia, fiz isso, aparentemente deu certo, testei numa relação de 100 clientes.Vou colocar aqui os códigos que fiz, para cpf e cnpj. Não sou expert em crystal / fórmulas, mas deu pra quebrar o galho,alguém depois pode otimizar, etc...============================================Fórmula Valida_CPF============== Shared numbervar soma; Shared numbervar Resto; Shared numbervar i ; Shared stringvar cpf; Shared booleanvar valida; Valida := true; CPF := Replace(seu_numero_de_cpf_aqui, ".", ""); CPF := Replace(CPF, "-", ""); CPF := Replace(CPF, "/", ""); If Len(CPF) <> 11 Then Valida := False; soma := 0; For i := 1 To 9 do soma := soma + Val(Mid(CPF, i, 1)) * (11 - i); Resto := 11 - (soma - (Int(soma / 11) * 11)); If Resto = 10 Or Resto = 11 Then Resto := 0; If Resto <> Val(Mid(CPF, 10, 1)) Then Valida := False; soma := 0; For i := 1 To 10 do soma := soma + Val(Mid(CPF, i, 1)) * (12 - i); Resto := 11 - (soma - (Int(soma / 11) * 11)); If Resto = 10 Or Resto = 11 Then Resto := 0; If Resto <> Val(Mid(CPF, 11, 1)) Then Valida := False; Valida;============================================Fórmula Valida_CNPJ==============Shared stringvar xCNPJ;Shared stringvar xTEXTO;Shared numbervar nPos;Shared BooleanVar Valida;Shared numbervar nX1;Shared numbervar nX2;Shared numbervar nX3;Shared numbervar nX4;Shared numbervar nX5;Shared numbervar nX6;Shared numbervar nX7;Shared numbervar nX8;Shared numbervar nX9;Shared numbervar nX10;Shared numbervar nX11;Shared numbervar nX12;Shared numbervar nX13;Shared numbervar nTX;Shared numbervar nInt;Shared numbervar nResto;Shared numbervar xDigito;Shared numbervar yDigito;xCNPJ := '';Valida := true;xCNPJ := Replace(seu_cgc_aqui, ".", "");xCNPJ := Replace(xCNPJ, "-", "");xCNPJ := Replace(xCNPJ, "/", "");// Calculo para o primeiro digito// Extrair os numeros de 1 a 12 e multiplica-los por 5,4,3,2,9,8,7,6,5,4,3,2 nX1 := Val(Mid(xCNPJ, 1, 1)) * (5); nX2 := Val(Mid(xCNPJ, 2, 1)) * (4); nX3 := Val(Mid(xCNPJ, 3, 1)) * (3); nX4 := Val(Mid(xCNPJ, 4, 1)) * (2); nX5 := Val(Mid(xCNPJ, 5, 1)) * (9); nX6 := Val(Mid(xCNPJ, 6, 1)) * (8); nX7 := Val(Mid(xCNPJ, 7, 1)) * (7); nX8 := Val(Mid(xCNPJ, 8, 1)) * (6); nX9 := Val(Mid(xCNPJ, 9, 1)) * (5); nX10 := Val(Mid(xCNPJ, 10, 1)) * (4); nX11 := Val(Mid(xCNPJ, 11, 1)) * (3); nX12 := Val(Mid(xCNPJ, 12, 1)) * (2);// Soma o Resultado nTX := ((nX1) + (nX2) + (nX3) + (nX4) + (nX5) + (nX6) + (nX7) + (nX8) + (nX9) + (nX10) + (nX11) + (nX12));// Divide-se o resultado por 11 e pega-se a parte inteira nInt := (Int((nTX) / (11)));// Acha-se o resto nResto := ((nTX) - ((nInt) * (11)));//Acha-se o Digito xDigito := Val(Mid(xCNPJ, 13, 1)); yDigito := ((11) - (nResto)); If yDigito >= 10 Then yDigito := 0;// Calculo para o segundo digito If xDigito = yDigito Then //Extrair os numeros de 1 a 11 e multiplica-los por 6,5,4,3,2,9,8,7,6,5,4,3,2 nX1 := Val(Mid(xCNPJ, 1, 1)) * (6); nX2 := Val(Mid(xCNPJ, 2, 1)) * (5); nX3 := Val(Mid(xCNPJ, 3, 1)) * (4); nX4 := Val(Mid(xCNPJ, 4, 1)) * (3); nX5 := Val(Mid(xCNPJ, 5, 1)) * (2); nX6 := Val(Mid(xCNPJ, 6, 1)) * (9); nX7 := Val(Mid(xCNPJ, 7, 1)) * (8); nX8 := Val(Mid(xCNPJ, 8, 1)) * (7); nX9 := Val(Mid(xCNPJ, 9, 1)) * (6); nX10 := Val(Mid(xCNPJ, 10, 1)) * (5); nX11 := Val(Mid(xCNPJ, 11, 1)) * (4); nX12 := Val(Mid(xCNPJ, 12, 1)) * (3); nX13 := Val(Mid(xCNPJ, 13, 1)) * (2); //Soma o Resultado nTX := ((nX1) + (nX2) + (nX3) + (nX4) + (nX5) + (nX6) + (nX7) + (nX8) + (nX9) + (nX10) + (nX11) + (nX12) + (nX13)); //Divide-se o resultado por 11 e pega-se a parte inteira nInt := (Int((nTX) / (11))); //Acha-se o resto nResto := ((nTX) - ((nInt) * (11))); //Acha-se o Digito xDigito := Val(Mid(xCNPJ, 14, 1)); yDigito := ((11) - (nResto)); If yDigito >= 10 Then yDigito := 0; //Retorno da funcao If xDigito = yDigito Then Valida := True Else Valida := False; if nResto = 10 then Valida := true; //(não sei porque mas tive q colocar essa linha pra dar certo.)valida;=================================== Editado Novembro 20, 2007 por Fábio Spies Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Fábio Spies
Validar CGC/CPF - Existe como no crystal 8.5 ?
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.