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.

    Vamos desenvolver a tela para fazer o exemplo.

    Adicione :

  • 1 Memo
  • 1 DbGrid
  • 1 DataSorce
  • 1 ClientDataSet(4 fields foram criados UF, CodigoIBGE, CodigoUF, Cidade)
  • 1 BitBtn

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.

Layout da aplicação

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 :

Layout da aplicação

Figura 2. Importação Concluída.

Fico por aqui ate à próxima Quick Tips.

Um abraço

Wesley Y