Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
ADO [17]
ASCII и CSV [12]
Access [20]
Alias [24]
BDE [37]
BLOB поля [19]
Clipper [2]
DB2 [2]
DBASE и DBF [26]
Fox Pro [1]
Interbase [21]
MSSQL [0]
ODBC [10]
Oracle [0]
Paradox [0]
SQL [29]
Sybase [1]
База данных [0]
Закладки [2]
Записи [0]
Индексы [10]
Компоненты и Базы данных [0]
Модуль данных [3]
Отчеты [2]
Ошибки БД [17]
Поиск [16]
Поля [0]
Сортировка и Фильтр [6]
Таблицы [0]

Наш опрос
Есть ли у Вас свой сайт?
Всего ответов: 48

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Базы данных » ASCII и CSV

ASCII драйвер для CSV-файлов
{
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
}
Категория: ASCII и CSV | Добавил: Skinner (03.07.2008) W
Просмотров: 526 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2024 Хостинг от uCoz