Conseguir contar os espaços deu certo a inserção dos dados, mais só gravou a primeira linha, debugei o código e não encontrei problemas, verifiquei que estava usando o comando "Next;" não gerava erro mais só gravava a primeira linha, substituir por "Readln" e agora gera o erro:
Project SysSam.exe raised exception class EInOutError with
message 'I/O error 6'. Process stopped. Use Step or Run to continue.
Como usar o comando POS ou Readln, para que grave todas as linhas?
Layout de importação:
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;
Código com os espaços corretos:
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
Pergunta
itasouza
Bom dia..
Conseguir contar os espaços deu certo a inserção dos dados, mais só gravou a primeira linha, debugei o código e não encontrei problemas, verifiquei que estava usando o comando "Next;" não gerava erro mais só gravava a primeira linha, substituir por "Readln" e agora gera o erro:
Project SysSam.exe raised exception class EInOutError with
message 'I/O error 6'. Process stopped. Use Step or Run to continue.
Como usar o comando POS ou Readln, para que grave todas as linhas?
Layout de importação:
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;
Código com os espaços corretos:
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
frmImportacao.Caption := 'Lendo Linha: ' + IntToStr(i) + ' de: ' + IntToStr(ProgressBar1.Max);
//Buscando pelo Parâmetro codigo, para verificar se já existe na tabela
//DM.cdsImportacao.Params.ParamByName('codigo').asString := Trim(Copy(Linha, 1, 8));
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.Edit; //Coloca em modo de edição para atualizar os campos
//Aqui os campos recebem as linhas lidas
DM.cdsImportacaocod_integracao.AsString :=Trim(Copy(Linha, 1, 7 ));
DM.cdsImportacaonome.AsString :=Trim(Copy(Linha, 9, 19 ));
DM.cdsImportacaocontato.AsString :=Trim(Copy(Linha, 31, 9 ));
DM.cdsImportacaoddi.AsString :=Trim(Copy(Linha, 41, 3 ));
DM.cdsImportacaoddd.AsString :=Trim(Copy(Linha, 45, 3 ));
DM.cdsImportacaofone.AsString :=Trim(Copy(Linha, 49, 8 ));
DM.cdsImportacaoddd_2.AsString :=Trim(Copy(Linha, 58, 3 ));
DM.cdsImportacaofone_2.AsString :=Trim(Copy(Linha, 62, 8 ));
DM.cdsImportacaoddd_3.AsString :=Trim(Copy(Linha, 71, 3 ));
DM.cdsImportacaofone_3.AsString :=Trim(Copy(Linha, 75, 8 ));
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;
Next;
end;
Agradeço a ajuda
Link para o comentário
Compartilhar em outros sites
5 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.