Ir para conteúdo
Fórum Script Brasil
  • 0

VALIDAR CNPJ E CPF


Guest --fabiola --

Pergunta

Guest --fabiola --

pessual estou utilizando esse codigo pra validar cpf e cnpj, porém quando coloco um cpf correto não consigo passar pra outro campo, sera que alguém pode me ajudar????tipo quando estiver certo o cpf quero que passe pra outro campo do formulario ao invés de aparecer a mensagem dizendo que o cnpj esta correto...entende?abraços

function CalculaCnpjCpf(Numero : String) : Boolean;
Var
i,d,b,
Digito : Byte;
Soma : Integer;
CNPJ : Boolean;
DgPass,
DgCalc : String;
begin
 Result := False;
 Numero := ApenasNumerosStr(Numero);
 // Caso o número não seja 11 (CPF) ou 14 (CNPJ), aborta
 Case Length(Numero) of
   11: CNPJ := False;
   14: CNPJ := True;
 else Exit;
 end;
 // Separa o número do digito
 DgCalc := '';
 DgPass := Copy(Numero,Length(Numero)-1,2);
 Numero := Copy(Numero,1,Length(Numero)-2);
 // Calcula o digito 1 e 2
 For d := 1 to 2 do begin
   B := IIF(D=1,2,3); // BYTE
   SOMA := IIF(D=1,0,STRTOINTDEF(DGCALC,0)*2);
   for i := Length(Numero) downto 1 do begin
     Soma := Soma + (Ord(Numero[I])-Ord('0'))*b;
     Inc(B);
     If (b > 9) And CNPJ Then
       b := 2;
   end;
  Digito := 11 - Soma mod 11;
  If Digito >= 10 then
    Digito := 0;
  DgCalc := DgCalc + Chr(Digito + Ord('0'));
 end;
 Result := DgCalc = DgPass;
end;

procedure Tfrmabas.EDTCPFExit(Sender: TObject);
var msg : string;
begin
   if edtcpf.text = 'CPF' then
    msg := 'CPF'
   else
   msg := 'CNPJ';

   if CalculaCnpjCpf(edtcpf.Text) then
      EDTPIS.SetFocus
   else ShowMessage(msg+' Incorreto.');
   EDTCPF.SetFocus;
end;

Editado por Micheus
Incluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

tenta esta modificacão

if edtcpf.text = 'CPF' then
   begin 
   if CalculaCnpjCpf(edtcpf.Text) = false  then
      begin
          ShowMessage(msg+' Incorreto.');
          EDTPIS.SetFocus;
      end; 
   end 
else
   begin
   if CalculaCnpjCpf(edtcpf.Text) = false  then
      begin
          ShowMessage(msg+' Incorreto.');
          EDTCPF.SetFocus;
      end; 
   end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Oi, Fabiola

Observe seu código aqui:

procedure Tfrmabas.EDTCPFExit(Sender: TObject);
var msg : string;
begin
   if edtcpf.text = 'CPF' then
    msg := 'CPF'
   else
   msg := 'CNPJ';
   if CalculaCnpjCpf(edtcpf.Text) then
      EDTPIS.SetFocus
   else ShowMessage(msg+' Incorreto.');
   EDTCPF.SetFocus;
end;
O correto, para atender o que você precisa, é assim:
procedure Tfrmabas.EDTCPFExit(Sender: TObject);
var msg : string;
begin
   if edtcpf.text = 'CPF' then
    msg := 'CPF'
   else
   msg := 'CNPJ';
   if CalculaCnpjCpf(edtcpf.Text) then
      EDTPIS.SetFocus
   else 
   begin
      ShowMessage(msg+' Incorreto.');
      EDTCPF.SetFocus;
   end;
end;

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...