Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 06 de Outubro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
106 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Exportando dados para arquivos
Publicado por ActiveDelphi : Quinta, Março 02, 2006 - 12:04 GMT-3 (10733 leituras)
Comentários comentar   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Fernando Tremonti Galera, este artigo se divide em duas partes básicas e uma terceira mais complexa. Esta primeira parte se trata de exporte de um arquivo e alguns conceitos. A segunda parte iremos importar este arquivo. E por fim, a terceira engloba essas duas e mais um pouco de importe e exporte mais complexos. Então Vamos Lá!!!

    Me responda: Quem nunca precisou que uma informação fosse gerada de um lugar para o outro sem precisar de uma rede e como se fosse uma maquininha automática?

    Hoje em dia essa é a nossa realidade!!! Exportar e Importar arquivos, sejam eles, do próprio ou de algum outro sistema.

    E como exportar os dados?!

    Existem diversas formas de exportar uma informação, como por exemplo, posso definir posições fixas, posso ter delimitador de caracteres, entre outras, e esse tipo de definição é chamados por nós de layout.

    Primeiramente, precisaremos definir qual tipo de layout iremos adotar?

    Neste exemplo iremos adotar o layout de posições, ele é um layout simples onde definiremos as posições dos dados. E usaremos uma procedure auxiliar que irá nos ajudar com os campos que não são de preenchimento obrigatório. Faremos com que independente do campo estar preenchido, ele fique em uma posição definida. Certo? Mãos á obra então!

    Neste artigo irei utilizar um banco em Acess que vem com o Delphi chamado dbdemos.mdb, e iremos exportar os dados da tabela Customer.     Utilizarei a camada ADO.

    No Delphi, Clique em File -> New -> Application;

    No Formulário coloque um componente - ADOConnection da paleta ADO

    Mude a propriedade LogimPrompt para False.

    Renomeie o componente para Conn.

    Clique duas vezes em ConnectionString e Siga os procedimentos das imagens:

 


 

    Clique em “Build...”

 


Escolha “Microsoft Jet 4.0 OLE DB Provider” e clique em “Next>>”

 


    Selecione o Banco, geralmente em:
    C:\Arquivos de programas\Arquivos comuns\Borland Shared\Data\dbdemos.mdb
    E Clique em “Test Connection”. Caso o teste seja efetuado corretamente clique em “OK” e suas configurações estão corretas, senão verifique suas configurações do Banco.

    Voltando para o Delphi, coloque na propriedade Connected do Componente Conn para True.

    Colque um Componente ADOTable da paleta ADO.

    E Mude suas Propriedades :
    Connection = Conn
    Name = TbCust
    TableName = customer

    Clique duas vezes no componente TbCust, uma nova tela será exibida, nesta nova tela clique em “Add all Fields”

 

 

Deixe seu formulário parecido com a figura abaixo:

 

 

    Pronto!!! Vamos aos Códigos....

    Declare na seção private a seguinte procedure

  function PadR(cStr: String; nSize: Integer; cCar: String): String;

    Ela nos ajudará a formatar as posições.

    Pressione CTRL+SHIFT+C para implemeta-la e faça da seguinte forma:

 

function TForm1.PadR(cStr: String; nSize: Integer; cCar: String): String;
var
  nFor, nAux: Integer;
  cAux: String;
begin
  cAux := Trim(cStr);
  nAux := Abs(Length(cAux)-nSize)-1;
  for nFor := 0 to nAux do
    cAux := cAux+cCar;
  Result := cAux;
end;

 

Nesta procedure passamos a string que desejamos formatar, quantas posições ela deverá ter e por último o caracter que será nosso coringa. Em meus sistemas normalmente eu gero uma sugestão para o nome, então no OnShow do Formulário digite:

 

var
  Data : String;
begin
  Data := DateToStr(Date);
  edtCaminho.Text := 'C:\' + 'Exporte' + Copy(Data , 1 , 2) +
                     Copy(Data , 4 , 2) +
                     Copy(data , 7 , 4) + '.EXP';

 

    Repare que sugeri uma extensão para este nosso arquivo, mas por quê?! Pense na hora do "Importe". Este arquivo poderia ser um .txt, mas aí poderia ser aberto no bloco de notas com qualquer clique pelo usuário. Coloco a extensão pois quando surge aquela telinha de tipo de extensão o usuário pensa duas vezes em abri-lo, e outra coisa, na hora de importar, poderemos fazer um filtro para mosrtar somente os arquivos com a extensões sugerida.

    Vamos agora gerar nosso Exporte, clicando duas vezes no botão btnExp. Declare duas variáveis:

 

var
  Caminho : String; //Será Responsável pelo caminho do nosso arquivo
  mArq    : TextFile; //É o nosso arquivo em si
begin
  //Vamos criar o arquivo e abri-lo para gravação:
  AssignFile(mArq, Caminho); //Cria o Arquivo
  Rewrite(mArq); {Abre para gravação}

  //Defina que a variável caminho é nosso edit
  Caminho := edtCaminho.text

  //Agora precisamos abrir a tabela;
  TbCust.Open;

  //Depois de Abrir a Tabela, defina:
  pb.Max := TbCust.RecordCount;

  //Vamos agora fazer um loop para que insira neste
  //nosso arquivo as informações da tabela.

  while not TbCust.Eof do
  Begin
    Writeln( marq ,
    Padr(Copy(FloatToStr(TbCustCustNo.Value) , 1 , 6), 6 , ' ') + ' ' +
    Padr(Copy(TbCustCompany.Value , 1, 30), 30 , ' ') + ' ' +
    Padr(Copy(TbCustAddr1.Value , 1 , 30), 30 , ' ') + ' ' +
    Padr(Copy(TbCustAddr2.Value , 1 , 30), 30 , ' ') + ' ' +
    Padr(Copy(TbCustCity.Value , 1, 15 ), 15 , ' ') + ' ' +
    Padr(Copy(TbCustState.Value, 1 , 20 ), 20 ,' ') + ' ' +
    Padr(Copy(TbCustZip.Value , 1 , 10 ), 10 , ' ') + ' ' +
    Padr(Copy(TbCustCountry.Value , 1 , 20), 20 , ' ') + ' ' +
    Padr(Copy(TbCustPhone.Value, 1 , 15 ), 15 , ' ') + ' ' +
    Padr(Copy(TbCustFAX.Value, 1 , 15 ), 15 , ' ') + ' ' +
    Padr(Copy(FloatToStr(TbCustTaxRate.Value), 1, 6), 6 , ' ') + ' ' +
    Padr(Copy( TbCustContact.Value, 1 , 20), 20 , ' ') + ' ' +
    DateToStr(TbCustLastInvoiceDate.Value));
    ProgressBar1.Position := ProgressBar1.Position + 1;
    TbCust.Next;
  End;

  //E para Concluir:
  ShowMessage('Processo Concluído!!!');
  Close;

end;

 

    Perguntas Freqüentes:
    - Por que dou um Copy?
    Porque não encontrei outra forma de fazer isso utilizando o ADO

    - Por que uso o Padr?
    Para formatar o campo com as posições corretas.

    Não se esqueçam de implementar outras rotinas, como por exemplo, verificar se o arquivo já existe, se o campo está em branco e coisas do tipo.     Uma dica vai abaixo, para verificar se o arquivo existe:

 

if FileExists(Caminho) Then
  if MessageBox(Handle, 'O Arquivo Já Existe. Deseja Substitui-lo?!',
                '**** CUIDADO *****', MB_ICONWARNING or MB_YESNO or MB_DEFBUTTON2) = idYes then
    DeleteFile(Caminho)
  else
    Exit;

 

    Espero que tenham gostado!
    Aguardem o próximo artigo para aprendermos a Importar estes nossos dados.

    Estarei à disposição em:
    Email: fernando_tremonti@yahoo.com.br
    Site: www.guardiansofhell.cjb.net

    Abraços...



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados