Home | Chi sono | Contattami
 

Progr. lineare

Delphi
 
Componenti
  Database
 
Miei articoli

Windows

Miei articoli 

 

Esportare TADOTable in vari formati


Spesso è necessario esportare i dati di una tabella o di una query in vari formati (Excel, Testo, etc...). E così mi sono creato stò componentino per rendere la TADOTable capace di esportare. ADO accetta una sintassi SQL estesa che consente l' esportazione in vari formati. Ho preso in considerazione i seguenti:

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

Per chi fosse interessato, i formati consentiti sono elencati nel registro di Windows nella chiave:

HKEY_LOCAL_MACHINE\Software\Microsoft\Jet\4.0\ISAM formats

1. Componente

unit ExportADOTable; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Db, ADODB; type TExportADOTable = class(TADOTable) private { Private declarations } //componente TADOCommand utilizzato per eseguire //l' istruzione SQL per l' esportazione FADOCommand: TADOCommand; protected { Protected declarations } public { Public declarations } constructor Create(AOwner: TComponent); override; //Procedure di esportazione //"FiledNames": lista dei nomi dei campi che si vuole esportare (separati dalla virgola) //"FileName" : nome del file di output (con percorso completo) //Ed ora un pò di ritocchi: il dataset può essere filtrato (Filtered = true and Filter <> '') //oppure ordinato su uno o più campi (Sort <> ''). In entrambi i casi devo aggiungere //tali informazioni all' istruzione SQL per l' esportazione: nel primo caso aggiungo //la condizione di filtro con la direttiva "where" mentre nel secondo caso aggiungo //la condizione di ordinamento con la direttiva "Order By" 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.

1.1 Piccola osservazione

Puoi usare come destinazione dell' export un database già esistente ma non una tabella già esistente all' interno del database in questione: in tal caso viene restituito un errore; è quindi consigliabile modificare il codice del componente per verificare tale situazione e procedere alla cancellazione della tabella o ad un abort dell' intero processo

 

 

 


 

 
 
Your Ad Here