Tenho um código que ler um aquivo txt e grava os dados no banco, estava contando os espaços e gravando de acordo com os mesmos.
O problema e que quando tem algum registro que a sequencia de campos não contem a mesma quantidade de espaços gera erro, então precisava separa por ‘;’ . Alterei o codigo com a ajuda do que achei no forum, mais quando chega no registro
DM.cdsImportacaonome.AsString :=sl_linha[1];
O nome da pessoa possui espaços, então ele esta separando como se fosse ‘;’ jogando o resultado em outros campos gerando erro.
Agradeço a ajuda!!
Tenho o layout
3351781;MARIA DA PENHA CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
3351781;MARIA DA PENHA CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
3351781;MARIA DA PENHA CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
3351781;MARIA DA PENHA CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
Pergunta
Guest --itasouza --
Bom dia a todos..
Tenho um código que ler um aquivo txt e grava os dados no banco, estava contando os espaços e gravando de acordo com os mesmos.
O problema e que quando tem algum registro que a sequencia de campos não contem a mesma quantidade de espaços gera erro, então precisava separa por ‘;’ . Alterei o codigo com a ajuda do que achei no forum, mais quando chega no registro
DM.cdsImportacaonome.AsString :=sl_linha[1];
O nome da pessoa possui espaços, então ele esta separando como se fosse ‘;’ jogando o resultado em outros campos gerando erro.
Agradeço a ajuda!!
Tenho o layout
3351781;MARIA DA PENHA CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
3351781;MARIA DA PENHA CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
3351781;MARIA DA PENHA CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
3351781;MARIA DA PENHA CAUS;69601640797;055;021;46671479;015;46687415;013;48879253;
Codigo funcionando
procedure TfrmImportacao.btnImportaClick(Sender: TObject);
var
fArq: TextFile; //Variável do Tipo Arquivo de Texto
Caminho: string; //Variável que armazenará o caminho
Linha: string; //Variável que vai armazenar cada linha
mTexto: TStringList; //Utilizada para contar as linhas a importar
i: integer; //variável utilizada no contador de linhas Importadas
sl_linha:TStringList;
begin
Caminho := editArquivo.Text; //Variavel vai receber os dados do edit
AssignFile(fArq, Caminho);
ReSet(fArq);
mTexto := TStringList.Create;
sl_linha:=TStringList.create;
sl_linha.Delimiter:=';';
try
mTexto.LoadFromFile(Caminho);
ProgressBar1.Max := mTexto.Count - 1;
i := 0;
finally
mTexto.Free;
end;
while not Eof(fArq) do //Enquanto não chegar ao fim do arquivo
begin
Application.ProcessMessages;
Readln(farq, linha); //Lê a linha e posiciona o cursor na próxima
sl_linha.DelimitedText := linha;
frmImportacao.Caption := 'Lendo Linha: ' + IntToStr(i) + ' de: ' + IntToStr(ProgressBar1.Max);
DM.cdsImportacao.Open; //Abre o CDS
//
if DM.cdsImportacao.IsEmpty then //Se Não existir o registro
DM.cdsImportacao.Append //Insira os dados da linha atual
else //Senão, se o registro já existir
DM.cdsImportacao.Append; // mesmo ezistindo ele inseri
//Aqui os campos recebem as linhas lidas
DM.cdsImportacaocod_integracao.AsString :=sl_linha[0];
DM.cdsImportacaonome.AsString :=sl_linha[1];
DM.cdsImportacaocontato.AsString :=sl_linha[2];
DM.cdsImportacaoddi.AsString :=sl_linha[3];
DM.cdsImportacaoddd.AsString :=sl_linha[4];
DM.cdsImportacaofone.AsString :=sl_linha[5];
DM.cdsImportacaoddd_2.AsString :=sl_linha[6];
DM.cdsImportacaofone_2.AsString :=sl_linha[7];
DM.cdsImportacaoddd_3.AsString :=sl_linha[8];
DM.cdsImportacaofone_3.AsString :=sl_linha[9];
DM.cdsImportacao.Post; //Salve o registro em memória
DM.cdsImportacao.ApplyUpdates(0); //Aplica as atualizações em memória no banco
DM.cdsImportacao.Close; //Fecha o CDS }
Inc(i);
ProgressBar1.Position := ProgressBar1.Position + 1;
end;
MessageBeep(65);
ShowMessage('Processo Concluído Com êxito!!!');
end;
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.