?? backup.~pas
字號:
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 + -