Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:


Экспорт ADO таблиц в разные форматы

Поиск:
Код

{  
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  
}  






Просмотров: 2615

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную