No exemplo abaixo as informações contidas no arquivo texto serão gravadas em dois ClientDataSet.
procedure TForm1.ImportarCSV;
var ArquivoCSV : TextFile;
Contador, I : Integer;
Linha : String;
// Lê Linha e Monta os valores
function MontaValor : String;
var ValorMontado : String;
begin
ValorMontado := '';
inc(I);
While Linha[I] >= ' ' do
begin
If Linha[I]= ';' then // vc pode usar qualquer delimitador ... eu estou usando o ";"
break;
ValorMontado := ValorMontado + Linha[I];
inc(I);
end;
result := ValorMontado;
end;
begin
// Carregando o arquivo ...
AssignFile(ArquivoCSV, 'c:\Nome_do_Arquivo');
try
Reset(ArquivoCSV);
Readln(ArquivoCSV, Linha);
Contador := 1;
while not Eoln(ArquivoCSV) do
begin
if Contador = 1 then // Primeira Linha do arquivo (Pedido);
begin
I := 0;
cdsPedido.Append;
cdsPedidoCodigoCliente.AsString := MontaValor;
cdsPedidoNomeDoCliente.AsString := MontaValor;
cdsPedido.Post;
end
else
begin
// Demais Linhas (Itens do Pedido )
I := 0;
cdsItensDoPedido.Append;
cdsItensDoPedidoCodigoProduto.AsString := MontaValor;
cdsItensDoPedidoNomeDoProduto.AsString := AnsiUpperCase(MontaValor);
cdsItensDoPedidoQuantidade.AsFloat := StrToFloat(MontaValor);
cdsItensDoPedidoPreco.AsCurrency := StrToCurr(MontaValor);
cdsItensDoPedido.Post;
end;
Readln(ArquivoCSV, Linha);
Contador := Contador + 1;
end;
finally
CloseFile(ArquivoCSV);
end;
end;
Um grande abraço e até o próximo post.
Amigo, boa tarde, gostaria de saber se não tem como vc me enviar o fonte desse Importando arquivo CSV (Texto Delimitado) para fins de estudo, pois estou tentando de tudo para fazer isso funcionar e não consigo, uso banco de dados SQL Server e o Delphi Seattle, é possivel importar esse arquivo para dentro do banco de dados????
ResponderExcluir