Olá galera, nesta Quick Tips, mostrarei como podemos exportar para um arquivo texto, separado por qualquer caractere os registros encontrados em um DBGrid.

Vamos então criar uma nova aplicação e salvar seu formulário como uFrmPrincipal.pas, já mude seu nome para FrmPrincipal, e salve o projeto como prjExportarDBGrid.dprj.

Agora adicione:

  • 1 TButton (BtnIniciarImportacao)
  • 1 TDBGrid (DBGridCliente)
  • 1 TClientDataSet (CDSCliente, estou usando um CDS temporário )

Vamos inicialmente criar uma procedure:

procedure ExportarDBGrid (const xCaracter: String);
   unit uFrmPrincipal;
  interface
  uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
     Dialogs, DB, Grids, DBGrids, DBClient, ExtCtrls, DBCtrls, StdCtrls, Mask,     
     ShellAPI;
  type
     TFrmPrincipal = class(TForm)
     CDSCliente: TClientDataSet;
     DSCliente: TDataSource;
     DBGridCliente: TDBGrid;
     CDSClienteIDCliente: TStringField;
     CDSClienteDescricao: TStringField;
     CDSClienteSexo: TStringField;
     CDSClienteEndereco: TStringField;
     Label1: TLabel;
     DBEdit1: TDBEdit;
     Label2: TLabel;
     DBEdit2: TDBEdit;
     Label3: TLabel;
     DBEdit3: TDBEdit;
     Label4: TLabel;
     DBEdit4: TDBEdit;
     DBNavigator1: TDBNavigator;
     BtnIniciarImportacao: TButton;
  private
  { Private declarations }
     procedure ExportarDBGrid(const xCaracter : String);
  public
  { Public declarations }
  end;

Vejamos a implementação desta procedure, mas antes disso vamos dar uses em ShellAPI, e logo vocês vão ver o motivo.

procedure TFrmPrincipal.ExportarDBGrid(const xCaracter: String);
  Var
     I : Integer;
     xArquivoTxt : TStringList;
     xLinhaCompleta : String;
  begin
     xArquivoTxt := TStringList.Create;
     while not DBGridCliente.DataSource.DataSet.Eof do
     begin
        xLinhaCompleta := '';
        for I := 0 to DBGridCliente.Columns.Count - 1 do
        begin
           xLinhaCompleta := xLinhaCompleta +    
           DBGridCliente.Columns[I].Field.AsString + xCaracter;
        end;
        DBGridCliente.DataSource.DataSet.Next;
        xArquivoTxt.Add(xLinhaCompleta);
     end;
     xArquivoTxt.SaveToFile('C:\arquivo.txt');
  { O motivo para termos dado uses em ShellAPI , foi para que pudéssemos 
    abrir diretamente o arquivo txt, usando a função ShellExecute }
   
     ShellExecute(handle,'open',PChar('C:\arquivo.txt'), '','',SW_SHOWNORMAL)
  end;

Agora vamos ver como usar nossa função

procedure TFrmPrincipal.BtnIniciarImportacaoClick(Sender: TObject);
  begin
      ExportarDBGrid(';');
  end;

Fico por aqui e ate à próxima Quick Tips. Baixe o exemplo completo neste post.