DELPHI FAQ: Ýêñïîðò ADO òàáëèö â ðàçíûå ôîðìàòû


Ýêñïîðò ADO òàáëèö â ðàçíûå ôîðìàòû
Previous  Home  Next





Exporting ADO tables into various formats 

In this article I want to present a component I built in order to 
supply exporting features to the ADOTable component. ADO supplies 
an extended SQL syntax that allows exporting of data into various  
formats. I took into consideration the following formats: 

1)Excel 
2)Html 
3)Paradox 
4)Dbase 
5)Text 

You can see all supported output formats in the registry: 
"HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\ISAM formats" 

This is the complete source of my component }
 

unit
 ExportADOTable; 

interface
 

uses
 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 
  Db, ADODB; 

type
 
  TExportADOTable = class
(TADOTable) 
  private
 
    { Private declarations }
 
    //TADOCommand component used to execute the SQL exporting commands 

    FADOCommand: TADOCommand; 
  protected
 
    { Protected declarations }
 
  public
 
    { Public declarations }
 
    constructor
 Create(AOwner: TComponent); override

    //Export procedures 

    //"FiledNames" is a comma separated list of the names of the fields you want to export 

    //"FileName" is the name of the output file (including the complete path) 

    //if the dataset is filtered (Filtered = true and Filter <> ''), then I append  

    //the filter string to the sql command in the "where" directive 

    //if the dataset is sorted (Sort <> '') then I append the sort string to the sql command in the  

    //"order by" directive 

    
    procedure
 ExportToExcel(FieldNames: string; FileName: string
      SheetName: string
; IsamFormat: string); 
    procedure
 ExportToHtml(FieldNames: string; FileName: string); 
    procedure
 ExportToParadox(FieldNames: string; FileName: string; IsamFormat: string); 
    procedure
 ExportToDbase(FieldNames: string; FileName: string; IsamFormat: string); 
    procedure
 ExportToTxt(FieldNames: string; FileName: string); 
  published
 
    { Published declarations }
 
  end


procedure
 Register

implementation
 

procedure
 Register
begin
 
  RegisterComponents('Carlo Pasolini'
, [TExportADOTable]); 
end


constructor
 TExportADOTable.Create(AOwner: TComponent); 
begin
 
  inherited


  FADOCommand := TADOCommand.Create(Self); 
end



procedure
 TExportADOTable.ExportToExcel(FieldNames: string; FileName: string
  SheetName: string
; IsamFormat: string); 
begin
 
  {IsamFormat values 
   Excel 3.0 
   Excel 4.0 
   Excel 5.0 
   Excel 8.0 
  }
 

  if
 not Active then 
    Exit; 
  FADOCommand.Connection  := Connection;   
  FADOCommand.CommandText := 'Select '
 + FieldNames + ' INTO ' + '[' + 
    SheetName + ']'
 + ' IN ' + '"' + FileName + '"' + '[' + IsamFormat + 
    ';]'
 + ' From ' + TableName; 
  if
 Filtered and (Filter <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' where '
 + Filter; 
  if
 (Sort <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' order by '
 + Sort; 
  FADOCommand.Execute; 
end


procedure
 TExportADOTable.ExportToHtml(FieldNames: string; FileName: string); 
var
 
  IsamFormat: string

begin
 
  if
 not Active then 
    Exit; 

  IsamFormat := 'HTML Export'


  FADOCommand.Connection  := Connection; 
  FADOCommand.CommandText := 'Select '
 + FieldNames + ' INTO ' + '[' + 
    ExtractFileName(FileName) + ']'
 +  
    ' IN '
 + '"' + ExtractFilePath(FileName) + '"' + '[' + IsamFormat + 
    ';]'
 + ' From ' + TableName; 
  if
 Filtered and (Filter <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' where '
 + Filter; 
  if
 (Sort <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' order by '
 + Sort; 
  FADOCommand.Execute; 
end



procedure
 TExportADOTable.ExportToParadox(FieldNames: string
  FileName: string
; IsamFormat: string); 
begin
 
  {IsamFormat values 
  Paradox 3.X 
  Paradox 4.X 
  Paradox 5.X 
  Paradox 7.X 
  }
 
  if
 not Active then 
    Exit; 

  FADOCommand.Connection  := Connection; 
  FADOCommand.CommandText := 'Select '
 + FieldNames + ' INTO ' + '[' + 
    ExtractFileName(FileName) + ']'
 +  
    ' IN '
 + '"' + ExtractFilePath(FileName) + '"' + '[' + IsamFormat + 
    ';]'
 + ' From ' + TableName; 
  if
 Filtered and (Filter <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' where '
 + Filter; 
  if
 (Sort <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' order by '
 + Sort; 
  FADOCommand.Execute; 
end


procedure
 TExportADOTable.ExportToDbase(FieldNames: string; FileName: string
  IsamFormat: string
); 
begin
 
  {IsamFormat values 
  dBase III 
  dBase IV 
  dBase 5.0 
  }
 
  if
 not Active then 
    Exit; 

  FADOCommand.Connection  := Connection; 
  FADOCommand.CommandText := 'Select '
 + FieldNames + ' INTO ' + '[' + 
    ExtractFileName(FileName) + ']'
 +  
    ' IN '
 + '"' + ExtractFilePath(FileName) + '"' + '[' + IsamFormat + 
    ';]'
 + ' From ' + TableName; 
  if
 Filtered and (Filter <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' where '
 + Filter; 
  if
 (Sort <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' order by '
 + Sort; 
  FADOCommand.Execute; 
end


procedure
 TExportADOTable.ExportToTxt(FieldNames: string; FileName: string); 
var
 
  IsamFormat: string

begin
 
  if
 not Active then 
    Exit; 

  IsamFormat := 'Text'


  FADOCommand.Connection  := Connection; 
  FADOCommand.CommandText := 'Select '
 + FieldNames + ' INTO ' + '[' + 
    ExtractFileName(FileName) + ']'
 +  
    ' IN '
 + '"' + ExtractFilePath(FileName) + '"' + '[' + IsamFormat + 
    ';]'
 + ' From ' + TableName; 
  if
 Filtered and (Filter <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' where '
 + Filter; 
  if
 (Sort <> ''then 
    FADOCommand.CommandText := FADOCommand.CommandText + ' order by '
 + Sort; 
  FADOCommand.Execute; 
end


end



Note that you can use an already existing database as destination but not an already existing 
table in the database itself: if you specify an already exixting table you will receive 
an error message. You might insert a verification code inside every exporting procedure of my 
component, before the execution of the sql exporting command, in order to send a request of   
deleting the already present table or aborting the exporting process. 

carlo Pasolini, Riccione(italy), e-mail: ccpasolini@libero.it 
}
 

Âçÿòî ñ ñàéòà http://www.swissdelphicenter.ch/en/tipsindex.php





DELPHI FAQ




EOMY TOP 100      Ðåéòèíã@Mail.ru      Rambler's Top100