importação txt para firebird
Estou importando um txt para fdb usando dbexpress e clientdataset, uso o código
procedure TfrmPrincipal.BitBtn1Click(Sender: TObject);
var
Txt: Textfile;
Terceiro, Ano, Mes, Dia: string;
begin
BitBtn1.Enabled:= false;
if OpenDialog1.Execute then
begin
dmImportar.cdsTerceiros.Open;
AssignFile(Txt,(OpenDialog1.FileName));//{ NOME do arquivo texto}
Animate1.Visible:= true;
Animate1.Active:= true;
Reset(Txt);
While not Eoln(Txt) do
begin
Readln(Txt,Terceiro);
dmImportar.cdsTerceiros.Insert;
dmImportar.cdsTerceiros.FieldByName('TIPO').Value:= Copy(Terceiro,1,3);
dmImportar.cdsTerceiros.FieldByName('ORDEM').Value:= Copy(Terceiro,4,5);
dmImportar.cdsTerceiros.FieldByName('FILLER1').Value:= Copy(Terceiro,09,2);
dmImportar.cdsTerceiros.FieldByName('PERSONALIDADE').Value:= StrToInt(Copy(Terceiro,11,1));
dmImportar.cdsTerceiros.FieldByName('CNPJCPF').Value:= Copy(Terceiro,12,14);
dmImportar.cdsTerceiros.FieldByName('RAZAOSOCIAL').Value:= Copy(Terceiro,26,60);
dmImportar.cdsTerceiros.FieldByName('APELIDO').Value:= Copy(Terceiro,86,20);
dmImportar.cdsTerceiros.FieldByName('ENDERECO_TIPO').Value:= Copy(Terceiro,106,10);
dmImportar.cdsTerceiros.FieldByName('ENDERECO_LOGRADOURO').Value:= Copy(Terceiro,116,60);
dmImportar.cdsTerceiros.FieldByName('NUMERO').Value:= Copy(Terceiro,176,10);
dmImportar.cdsTerceiros.FieldByName('CEP').Value:= Copy(Terceiro,206,09);
dmImportar.cdsTerceiros.FieldByName('BAIRRO').Value:= Copy(Terceiro,215,30);
dmImportar.cdsTerceiros.FieldByName('MUNICIPIO').Value:= Copy(Terceiro,245,30);
dmImportar.cdsTerceiros.FieldByName('UF').Value:= Copy(Terceiro,275,2);
Ano := Copy(Terceiro,277,4);
Mes := Copy(Terceiro,281,2);
Dia := Copy(Terceiro,283,2);
dmImportar.cdsTerceiros.FieldByName('DATAINICIOATIVIDADES').Value:= dia+'/'+mes+'/'+ano;
dmImportar.cdsTerceiros.FieldByName('TELEFONE_DDD').Value:= Copy(Terceiro,285,5);
dmImportar.cdsTerceiros.FieldByName('TELEFONE_NUMERO').Value:= Copy(Terceiro,290,10);
dmImportar.cdsTerceiros.FieldByName('TELEFAX_DDD').Value:= Copy(Terceiro,300,5);
dmImportar.cdsTerceiros.FieldByName('TELEFAX_NUMERO').Value:= Copy(Terceiro,305,10);
dmImportar.cdsTerceiros.FieldByName('EMAIL').Value:= Copy(Terceiro,315,50);
dmImportar.cdsTerceiros.FieldByName('HOMEPAGE').Value:= Copy(Terceiro,365,60);
dmImportar.cdsTerceiros.FieldByName('INSCEST').Value:= Copy(Terceiro,425,20);
dmImportar.cdsTerceiros.FieldByName('INSCMUN').Value:= Copy(Terceiro,445,20);
dmImportar.cdsTerceiros.FieldByName('CNAE').Value:= Copy(Terceiro,465,10);
dmImportar.cdsTerceiros.FieldByName('RG_NUMERO').Value:= Copy(Terceiro,475,18);
dmImportar.cdsTerceiros.FieldByName('RG_ORGAO').Value:= Copy(Terceiro,493,5);
dmImportar.cdsTerceiros.FieldByName('RG_ESTADO').Value:= Copy(Terceiro,498,2);
Ano := Copy(Terceiro,500,4);
Mes := Copy(Terceiro,504,2);
Dia := Copy(Terceiro,506,2);
dmImportar.cdsTerceiros.FieldByName('RG_DT_EMISSAO').Value:= dia+'/'+mes+'/'+ano;
dmImportar.cdsTerceiros.FieldByName('SEXO').Value:= StrToInt(Copy(Terceiro,508,1));
dmImportar.cdsTerceiros.FieldByName('CODIGO_PAIS').Value:= Copy(Terceiro,509,4);
dmImportar.cdsTerceiros.FieldByName('CODIGO_IBGE').Value:= Copy(Terceiro,513,5);
dmImportar.cdsTerceiros.FieldByName('FILLER2').Value:= Copy(Terceiro,518,86);
dmImportar.cdsTerceiros.FieldByName('CODIGO_MUN_EST').Value:= Copy(Terceiro,604,10);
dmImportar.cdsTerceiros.Post;
lblProcessando.Caption:= 'Importando, aguarde... '+ IntToStr(dmImportar.cdsTerceiros.RecordCount);
if dmImportar.cdsTerceiros.ApplyUpdates(0) <> 0 then
dmImportar.cdsTerceiros.CancelUpdates;
end;
CloseFile(Txt);
lblProcessando.Caption:= 'Importação realizado com sucesso...';
BitBtn1.Enabled:= true;
BitBtn2.Visible := True;
BitBtn2.Kind:= bkClose;
Animate1.Visible:= true;
Animate1.Active:= False;
lblProcessando.Caption := 'Foi Importado um total de '+ IntToStr(dmImportar.cdsTerceiros.RecordCount)+' registros com sucesso';
end;
end;
Como criar e usar algo que faça uma verificação na tabela e se no arquivo de importação constar CPF/CNPF que já exista na tabela o sistema informar que já existe e não fazer a importação desta linha, mas continua com o processo. outra coisa é verificar no arquivo texto se tem mais de um CPF/CNPJ e importar só o primeiro encontrado, ignorando e informando ao ususário os repetidos.
Lembrando que o CPF/CNPJ seria a chave primária.
Obrigado.
Discussão (29)
Carregando comentários...