Количество показов: 1872
Опубликован: 2007-01-12 06:38:03
Автор:  Александр Бондарь

Предыдущая часть


Экспорт и импорт данных в текстовом формате выполняется при помощи методов BatchOutput и BatchInput компонента TpFIBQuery.

Создайте новый проект BatchQuery3. Он похож на предыдущие два проекта.

Рисунок 3

Рис. 3. Проект BatchQuery3. Экспорт/импорт в текстовом формате

Для экспорта данных в текстовом формате с использованием функции BatchOutput нужно написать следующий обработчик события щелчка по кнопке BQueryBatchOutputD.

Delphi

procedure TFormBatch.BQueryBatchOutputDClick(Sender: TObject);
var Str: TFIBOutputDelimitedFile;
begin
if
OpenDialogOutDel.Execute then
begin

Str := TFIBOutputDelimitedFile.Create;
Str.Filename := OpenDialogOutDel.FileName;
// Str.RowDelimiter := '+++';
// Str.ColDelimiter := '**';
// Str.OutputTitles := True;
SelectQuery.Close;
SelectQuery.BatchOutput(Str);
Str.Destroy;
SelectQuery.Close;
end;
end;

C++

void __fastcall TFormBatch::BQueryBatchOutputDClick(TObject *Sender)
{
if (OpenDialogOutDel->Execute())
{ TFIBOutputDelimitedFile *Str;
Str = new TFIBOutputDelimitedFile();
Str->Filename = OpenDialogOutDel->FileName;
// Str->RowDelimiter = "+++";
// Str->ColDelimiter = "**";
// Str->OutputTitles = true;
SelectQuery->Close();
SelectQuery->BatchOutput(Str);
delete Str;
SelectQuery->Close();
}
}

В данном случае функции BatchOutput мы передаем объект Str класса TFIBOutputDelimitedFile, являющийся потомком класса TFIBBatchOutputStream.

Единственным обязательным свойством этого объекта является имя файла (Filename).

Вы также можете указать разделитель строк (RowDelimiter) и разделитель колонок (ColDelimiter). Это могут быть строки символов произвольной длины. Во фрагментах кода разделители представлены в виде комментариев.

По умолчанию разделителем строк являются символы возврата каретки и перевода строки (#13#10 в Delphi, ‘\n’ в C++). Разделитель колонок: символ табуляции (#9 в Delphi, ‘\t’ в C++).

Если свойство OutputTitles объекта Str установить в True, то первой строкой создаваемого файла будет заголовок, содержащий список имен полей набора данных.

Здесь также необходимо закрыть запрос и уничтожить объект Str после выполнения экспорта.

TpFIBQuery. Импорт в текстовом формате.

Для импорта данных в текстовом формате с использованием функции BatchInput напишите следующий обработчик события щелчка по кнопке BQueryBatchInputD.

Delphi

procedure TFormBatch.BQueryBatchInputDClick(Sender: TObject);
var Str: TFIBInputDelimitedFile;
begin
if
OpenDialogInDel.Execute then
begin

Str := TFIBInputDelimitedFile.Create;
Str.Filename := OpenDialogInDel.FileName;
// Str.RowDelimiter := '+++';
// Str.ColDelimiter := '**';
// Str.SkipTitles := True;
InsertQuery.BatchInput(Str);
pFIBTransaction1.CommitRetaining;
Str.Destroy;
pFIBDataSet1.FullRefresh;
end;
end;

C++

void __fastcall TFormBatch::BQueryBatchInputDClick(TObject *Sender)
{
if (OpenDialogInDel->Execute())
{ TFIBInputDelimitedFile *Str;
Str = new TFIBInputDelimitedFile();
Str->Filename = OpenDialogInDel->FileName;
// Str->RowDelimiter = ”+++”;
// Str->ColDelimiter = ”**”;
// Str->SkipTitles = true;
InsertQuery->BatchInput(Str);
pFIBTransaction1->CommitRetaining();
delete Str;
pFIBDataSet1->FullRefresh();
}
}

Функции BatchInput передается объект Str, являющийся потомком класса TFIBBatchInputStream. Обязательное свойство — Filename.

Как и в случае экспорта, вы можете указать разделитель строк (RowDelimiter) и разделитель колонок (ColDelimiter). Для нормального выполнения импорта необходимо, чтобы здесь были указаны те же разделители, что и при экспорте.

Если при экспорте было установлено в True свойство OutputTitles, то при импорте следует установить в True значение свойства SkipTitles, чтобы строка заголовка не рассматривалась как строка таблицы.

Класс TFIBBatchInputStream содержит еще и свойство ReadBlanksAsNull. Если его значение установить в True, то символьные поля, содержащие только пробелы, будут при помещении в базу преобразованы в значение NULL.

Продолжение следует...

Специальные цены для ex-USSR (кроме стран ЕС):

235 Euro
1500 руб. для физ. лиц
3600 руб. для юр. лиц

Скидки при покупке нескольких копий!

Огромное спасибо!!! FIB+ rullezzz! >>

TO$HIK!
Раздел для покупателей
Получение полных версий и обновлений. Перейти в Customer's Center

Сайт по Delphi: ежедневные ИТ-новости, статьи, документация, компоненты, конкурсы, юмор...