以下のDataSetToASCII 手続きを使ってASCIIファイルにエクスポートします。
DataSetToASCIIは、TDataSetから指定されたASCIIファイルにレコードをエクスポートします。
フィールドは指定されたデリミタ文字により区切られ、レコードは改行コードによって区切られます。
また引数 QuoteStrings が True の際には、以下の種類のフィールドは単一引用符によって囲われた形で出力されます。
最後に出力しない(したくない)フィールドは、Tag プロパティを0(デフォルト)以外に設定してください。
0以外に設定することでエクスポートの対象外となります。
unit Unit1;
interface
uses
Db, Classes, Dialogs, SysUtils;
procedure DataSetToASCII(const ADataSet: TDataSet;
const ASCIIFile: TFileName; const Delimiter: Char;
const QuoteStrings: Boolean);
implementation
procedure DataSetToASCII(const ADataSet: TDataSet;
const ASCIIFile: TFileName; const Delimiter: Char;
const QuoteStrings: Boolean);
var
i, LastIndex: LongInt;
AsciiRecord: String;
begin
with TStringList.Create, ADataSet do
try
LastIndex:= Pred(Fields.Count);
First;
while not EOF do
begin
AsciiRecord:= '';
for i := 0 to LastIndex do
begin
if Fields.Fields[i].Tag = 0 then
begin
if (QuoteStrings) and
(Fields.Fields[i].DataType
in [ftString, ftMemo, ftFmtMemo, ftFixedChar, ftWideString]) then
begin
AsciiRecord := AsciiRecord + AnsiQuotedStr(Fields.Fields[i].AsString);
end
else
begin
AsciiRecord := AsciiRecord + Fields.Fields[i].AsString;
end;
if (i < LastIndex) then AsciiRecord:= AsciiRecord + Delimiter;
end;
end;
Append(AsciiRecord);
Next;
end;
try
SaveToFile(ASCIIFile)
except
ShowMessage('テーブルは指定されたファイル: ' + ASCIIFile + ' にセーブできませんでした。');
end;
finally
Free;
end;
end;
end.