⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backup.pas

📁 delphi开发的中国移动大客户管理系统,后台数据库为oracle
💻 PAS
字号:
//------------------------------------------------------------
//      作者:曾庆顺
//      模块:备份数据窗口
//      时间:2002.09.17
//      功能介绍:
//-----------------------------------------------------------
unit backup;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, DBTables, Db, Buttons,FileCtrl;

type
  TBackFrm = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    RB_DB: TRadioButton;
    RB_DBF: TRadioButton;
    RB_TXT: TRadioButton;
    Table1: TTable;
    Table2: TTable;
    BatchMove1: TBatchMove;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure RB_DBClick(Sender: TObject);
    procedure RB_DBFClick(Sender: TObject);
    procedure RB_TXTClick(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private declarations }
    FDir:string;
    //得到数据库服务器日期
    Function GetDbServerDate(DBName:string):string;overload;
  public
    { Public declarations }
    //表名和电厂编号
    FTName:string;
    //字段长度超过255则为大字段,文本方式是不能导出数据
    Fbtxt:boolean;
  end;

var
  BackFrm: TBackFrm;

implementation

{$R *.DFM}
procedure TBackFrm.FormCreate(Sender: TObject);
begin
  //数据备份在当前目录下\data子目录
  FDir:=ExtractFilePath(ParamStr(0))+'data\'+GetDbServerDate('db_vipdl');
  if not DirectoryExists(FDir) then ForceDirectories(FDir);
  Fbtxt:=true;
end;

procedure TBackFrm.RB_DBClick(Sender: TObject);
begin
  Label2.Caption:=FDir + '\' + FTName + '.db';
end;

procedure TBackFrm.RB_DBFClick(Sender: TObject);
begin
  Label2.Caption:=FDir + '\' + FTName + '.dbf';
end;

procedure TBackFrm.RB_TXTClick(Sender: TObject);
begin
  Label2.Caption:=FDir + '\' + FTName + '.txt';
end;

procedure TBackFrm.BitBtn1Click(Sender: TObject);
begin
   table1.TableName:=FTName;
   //过滤要导入数据的电厂

   table1.Filtered:=true;

   BatchMove1.Mode:=batCopy;

   table2.DatabaseName:=FDir;
   if RB_DB.Checked then
   begin
     table2.TableName:=FTName+'.db';
     table2.TableType:=ttParadox;
   end
   else if RB_DBF.Checked then
   begin
     table2.TableName:=FTName+'.dbf';
     table2.TableType:=ttDBase;
   end
   else
   begin
     table2.TableName:=FTName+'.txt';
     table2.TableType:=ttASCII;
   end;
   try
     BatchMove1.Execute;
   except
     Application.MessageBox('备份登录日志失败!','警告',MB_OK+MB_ICONSTOP);
     close;
     exit;
   end;
   Application.MessageBox('备份登录日志成功!','警告',MB_OK+MB_ICONEXCLAMATION);
   close;
end;

procedure TBackFrm.FormShow(Sender: TObject);
begin
   Label2.Caption:=FDir + '\' + FTName + '.db';
   RB_TXT.Enabled:=Fbtxt;
end;

function TBackFrm.GetDbServerDate(DBName: string): string;
var query:TQuery;
    Present: TDateTime;
    Year, Month, Day: Word;
    str:string;
begin
  try
      query:=TQuery.Create(nil);
  except
      exit;
  end;
  query.DatabaseName:=DBname;
  query.close;
  query.sql.Clear;
  query.sql.Add('select distinct sysdate from dual');
  try
     query.open;
  except
     exit;
  end;
  query.First;
  Present:=Query.Fields[0].AsDateTime;
  DecodeDate(Present, Year, Month, Day);
  str:=inttostr(year);
  if month<10 then str:=str+'0'+inttostr(month)
  else str:=str+inttostr(month);
  if day<10 then str:=str+'0'+inttostr(day)
  else str:=str+inttostr(day);
  result:=str;
  query.free;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -