скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Как экспортировать таблицу базы данных в ASCII-файл




unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls, Db, DBTables, Grids, DBGrids;

type
  TForm1 = class(TForm)
    DBGrid1: TDBGrid;
    MyTable: TTable;
    DataSource1: TDataSource;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure ExportToASCII;
end;

var
  Form1: TForm1;

implementation
{$R *.DFM}

procedure TForm1.ExportToASCII;
const
  FASCIISeparator:string=' | ';
var
  I: Integer;
  Dlg: TSaveDialog;
  ASCIIFile: TextFile;
  Res, FASCIIFieldNames: Boolean;
  FASCIIFileName:string;
begin
  with MyTable do
  begin
    if Active then
      if (FieldCount > 0) and (RecordCount > 0) then
      begin
        Dlg := TSaveDialog.Create(Application);
        Dlg.FileName := FASCIIFileName;
        Dlg.Filter := 'ASCII-Fiels (*.asc)|*.asc';
        Dlg.Options := Dlg.Options+[ofPathMustExist,
        ofOverwritePrompt, ofHideReadOnly];
        Dlg.Title := 'Экспоритровать данные в ASCII-файл';
        try
          Res := Dlg.Execute;
          if Res then
            FASCIIFileName := Dlg.FileName;
        finally
          Dlg.Free;
        end;
        if Res then
        begin
          AssignFile(ASCIIFile, FASCIIFileName);
          Rewrite(ASCIIFile); First;
          if FASCIIFieldNames then
          begin
            for I := 0 to FieldCount-1 do
            begin
              write(ASCIIFile, Fields[I].FieldName);
              if I <> FieldCount-1 then
                write(ASCIIFile, FASCIISeparator);
            end;
            write(ASCIIFile, #13#10);
          end;
          while not EOF do
          begin
            for I := 0 to FieldCount-1 do
            begin
              write(ASCIIFile, Fields[I].Text);
              if I <> FieldCount-1 then
                write(ASCIIFile, FASCIISeparator);
            end;
            Next;
            if not EOF then
              write(ASCIIFile, #13#10);
          end;
          CloseFile(ASCIIFile);
          if IOResult <> 0 then
            MessageDlg('Ошибка при создании или переписывании '+
            'в ASCII-файл', mtError, [mbOK], 0);
        end;
      end
      else
        MessageDlg('Нет данных для экспортирования.',
        mtInformation, [mbOK], 0)
    else
      MessageDlg('Таблица должна быть открытой, чтобы данные '+
      'можно было экспортировать в ASCII-формат.', mtError, [mbOK], 0);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ExportToASCII;
end;

end.






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook