Quick Tips : Importar Txt para ClientDataSet

Veja nesta quick como importar um txt, das cidades pelo IBGE, para o ClientDataSet

Olá galera, nesta Quick Tips, irei mostrar como importar um determinado txt para dentro de um ClientDataSet, estou usando a base de dados do IBGE, que contém as cidades do Brasil, incluindo os estados, além do código da UF, e do código do IBGE. Este arquivo pode ser baixado no link, http://www.clubecobol.com.br/arquivos/indice.php, e o seu nome é Arquivo TXT de cidade IBGE e layout.

Com toda esta preocupação com relação a Nota Fiscal Eletrônica, onde temos que informar qual é o código do bairro, código da cidade, código da UF, definidos pelo IBGE, segue nesta Quick, um exemplo para importar um determinado Txt.

Observe que eu vou gravar este dados em uma base XML, e não em um Banco de Dados, mas como estou usando o ClientDataSet, basta você apontar ele para sua tabela, e ao final da importação executar o comando ApplyUpdates do mesmo.


Figura 1. Layout da aplicação.

Vocês podem observar que o arquivo do IBEG tem um padrão e um layout.

Listagem 1: Veja o layout:

UF PIC X(02). COD-IBGE PIC 9(05). COD-UF PIC 9(02). CIDADE PIC X(20).

Listagem 2: Veja exemplo do arquivo :

AC0001312ACRELANDIA AC0005412ASSIS BRASIL AC0010412BRASILEIA AC0013812BUJARI AC0017912CAPIXABA AC0020312CRUZEIRO DO SUL AC0025212EPITACIOLANDIA AC0030212FEIJO AC0032812JORDAO AC0033612MONCIO LIMA AC0034412MANOEL URBANO AC0035112MARECHAL THAUMATURGO AC0038512PLACIDO DE CASTRO AC0039312PORTO WALTER AC0040112RIO BRANCO AC0042712RODRIGUES ALVES AC0043512SANTA ROSA DO PURUS AC0045012SENADOR GUIOMARD AC0050012SENA MADUREIRA AC0060912TARAUACA AC0070812XAPURI AC0080712PORTO ACRE AL0010227AGUA BRANCA AL0020127ANADIA

Listagem 3: Implementação no clique do botão

procedure TForm1.BtnImportarClick(Sender: TObject); var I: Integer; begin {Veja oLayout do arquivo UF PIC X(02). COD-IBGE PIC 9(05). COD-UF PIC 9(02). CIDADE PIC X(20). Observe que os tamanhos são fixos, tirando a cidade que pode variar de 1 até 20 caracteres } //Carregamos o arquivo em um Memo Memo1.Lines.LoadFromFile('ListaCidade_IBGE.txt'); for I := 0 to Pred(Memo1.Lines.Count) do begin //Preparamos a tabela para inclusão CDS.Insert; //Usando a função Copy, pegamos a posição 1 e copiamos 2 caracteres CDSUF.AsString := Copy(Memo1.Lines.Strings[I],1,2); //Usando a função Copy, pegamos a posição 3 e copiamos 5 caracteres CDSCodigoIBGE.AsString := Copy(Memo1.Lines.Strings[I],3,5); //Usando a função Copy, pegamos a posição 6 e copiamos 2 caracteres CDSCodigoUF.AsString := Copy(Memo1.Lines.Strings[I],6,2); //Usando a função Copy, pegamos a posição 10 e copiamos até o final da string CDSCidade.AsString := Copy(Memo1.Lines.Strings[I],10,Length(Memo1.Lines.Strings[I])); //Gravamos o registro CDS.Post; {Serve para atualizar o form toda vez que for incluido um registro, atualizando assim a grid} Application.ProcessMessages; end; end;

Ao executarmos nossa aplicação poderemos notar que o resultado foi o seguinte :


Figura 2. Importação Concluída.

Fico por aqui ate à próxima Quick Tips.

Um abraço

Wesley Y

Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados