Não é a linguagem de programação que define o programador, mas sim sua lógica

Importar Txt para ClientDataSet


Todo ano temos a necessidade de atualizar os código de IBGE, acrescentar cidades novas inativar algumas, isto com os NCM, CEST e entre outros, para atualizar as tabelas sem a necessidade de atualizar o sistema para todos os clientes eu simplesmente atualizo por .txt e ao iniciar o sistema ele pega o arquivo e auto-atualiza! 

Nesse exemplo meramente didático não vamos gravar no banco de dados! Mas para gravar seria apenas vincular o TClienteDataSet ao um componente de banco de dados.

Vamos precisar 

Vou deixar minha tela assim 

O arquivo com as cidades e código esta mais ou menos assim, não o alterei só peguei do site do IBGE
AC0001312ACRELANDIA
AC0005412ASSIS BRASIL
AC0010412BRASILEIA
AC0013812BUJARI
AC0017912CAPIXABA
AC0020312CRUZEIRO DO SUL
AC0025212EPITACIOLANDIA
AC0030212FEIJO
AC0032812JORDAO
AC0033612MONCIO LIMA
AC0034412MANOEL URBANO
AC0035112MARECHAL THAUMATURGO
AC0038512PLACIDO DE CASTRO
AC0039312PORTO WALTER

Já que minha tabela não e de conexão com banco de dados tenho que fazer a criação do meu ClientDataSet
procedure TFSistema.DoCreate;
begin
  inherited;
  CDSImportacao.CreateDataSet;
end;

Já no botão Importar vai o código de importação
procedure TFSistema.BtnImportarClick(Sender: TObject);
var
  li: Integer;
begin
  mmLista.Lines.LoadFromFile('IBGE.Txt');
  for li := 0 to Pred(mmLista.Lines.Count) do begin
    CDSImportacao.Insert;
    CDSImportacaoUF.AsString := Copy(mmLista.Lines.Strings[li], 1, 2);
    CDSImportacaoIBGE.AsString := Copy(mmLista.Lines.Strings[li], 3, 5);
    CDSImportacaoCodigoUF.AsString := Copy(mmLista.Lines.Strings[li], 6, 2);
    CDSImportacaoCidade.AsString := Copy(mmLista.Lines.Strings[li], 10, Length(mmLista.Lines.Strings[li]));
    CDSImportacao.Post;
    Application.ProcessMessages;
  end;
end;

Fiz um código bem simples para mostrar como pode ser feito a importação de arquivos para dentro de uma tabela no sistema, espero ter ajudado.

2 comentários:

  1. Bom dia e como faço para exporta para txt so que tem que muda a posição e coloca um edit para adiciona, em uma coluna inteira com mesmo numero dbgrid

    ResponderExcluir