Fórum Validar CPF e jogar em Outra Tabela #371416
19/06/2009
0
Gente sou muito novato no Delphi7, preciso da ajuda de vcs tenho uma tabela que contem 5000 Cpf, preciso fazer um programa que verifique os Cpfs e jogue para outra tabela somente os Cpf válidos.
Jose Junior
Curtir tópico
+ 0
Responder
Posts
19/06/2009
Uasan
Bom eu faria da seguinte maneira.
------------------------>CODIGO
for x:=1 to CDSCPF.recordcount do
begin
if (validacpf(CDSCPFCPFFUNC.asstring) = true) then
begin
cdsNOVOCPF.insert;
cdsNOVOCPFCPFFUNC.asstring := CDSCPFCPFFUNC.asstring;
CDSNOVOCPF.post;
CDSNOVOCPF.applyupdates(-1);
end else
begin
CDSCPFINVALIDO.insert;
cdsCPFINVALIDOSCPFFUNC.asstring := CDSCOFFUNC.asstring;
cdsCPFINVALIDOS.post;
cdsCPFINVALIDOS.applyupdate(-1);
end;
end
function validacpf(const s:string): Boolean;
var
i,Numero,Resto: Byte;
DV1,DV2: Byte;
Total, Soma: Integer;
Begin
result:=false;
if length(Trim) = 11 then begin
Total:=0;
Soma:=0;
for i:= 1 to 9 do Begin
Try
Numero := StrToInt (s[i]);
Except
Numero:=0;
end;
Total:=Total+(Numero*(11-i));
Soma:=Soma+Numero;
end;
Resto:=Total mod 11;
if Resto > 1 then
DV1:=11-Resto
else
DV1:=0;
Total:=Total+Soma+2*DV1;
Resto:=Total mod 11;
if Resto > 1 then
DV2:= 11-Resto
else
DV2:=0;
if (IntToStr(DV1)=s[10])and(IntToStr(DV2)=s[11]) then
result:=true;
end;
end;
-------------------->CODIGO
Colocava um gauge ou progress bar para mostrar na tela o processamento.
Bom ai vai de você.
Espero que eu tenha dado uma luz.
[]´s
------------------------>CODIGO
for x:=1 to CDSCPF.recordcount do
begin
if (validacpf(CDSCPFCPFFUNC.asstring) = true) then
begin
cdsNOVOCPF.insert;
cdsNOVOCPFCPFFUNC.asstring := CDSCPFCPFFUNC.asstring;
CDSNOVOCPF.post;
CDSNOVOCPF.applyupdates(-1);
end else
begin
CDSCPFINVALIDO.insert;
cdsCPFINVALIDOSCPFFUNC.asstring := CDSCOFFUNC.asstring;
cdsCPFINVALIDOS.post;
cdsCPFINVALIDOS.applyupdate(-1);
end;
end
function validacpf(const s:string): Boolean;
var
i,Numero,Resto: Byte;
DV1,DV2: Byte;
Total, Soma: Integer;
Begin
result:=false;
if length(Trim) = 11 then begin
Total:=0;
Soma:=0;
for i:= 1 to 9 do Begin
Try
Numero := StrToInt (s[i]);
Except
Numero:=0;
end;
Total:=Total+(Numero*(11-i));
Soma:=Soma+Numero;
end;
Resto:=Total mod 11;
if Resto > 1 then
DV1:=11-Resto
else
DV1:=0;
Total:=Total+Soma+2*DV1;
Resto:=Total mod 11;
if Resto > 1 then
DV2:= 11-Resto
else
DV2:=0;
if (IntToStr(DV1)=s[10])and(IntToStr(DV2)=s[11]) then
result:=true;
end;
end;
-------------------->CODIGO
Colocava um gauge ou progress bar para mostrar na tela o processamento.
Bom ai vai de você.
Espero que eu tenha dado uma luz.
[]´s
Responder
Gostei + 0
19/06/2009
.lg.
So dando um alerta a gelerinha...
Pode ser por vários fatores, mas os que não sabem:
Favor usarem a tag [[b:68b9962cf6]Code[/b:68b9962cf6]]. Facilita a visualização e o entendimento do código.
Exemplo:
[[b:68b9962cf6]Code[/b:68b9962cf6]]Application.Terminate;[[b:68b9962cf6]/code[/b:68b9962cf6]]
É bem simples de se usar. Além de encurtar o tempo de leitura dos usuários. :wink:
Abraços gente.
.lg.
Pode ser por vários fatores, mas os que não sabem:
Favor usarem a tag [[b:68b9962cf6]Code[/b:68b9962cf6]]. Facilita a visualização e o entendimento do código.
Exemplo:
[[b:68b9962cf6]Code[/b:68b9962cf6]]Application.Terminate;[[b:68b9962cf6]/code[/b:68b9962cf6]]
É bem simples de se usar. Além de encurtar o tempo de leitura dos usuários. :wink:
Abraços gente.
.lg.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)