📄 u_data_backup.pas
字号:
unit U_data_backup;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, RzButton, StdCtrls, RzLabel, Mask,RzListVw, ImgList,
ComCtrls, FileCtrl, RzPrgres, RzStatus, DB, ADODB;
type
TFrm_data_backup = class(TForm)
Btn_Cancel: TRzBitBtn;
Btn_ok: TRzBitBtn;
ImageList1: TImageList;
FileListBox1: TFileListBox;
Btn_del: TRzBitBtn;
Timer1: TTimer;
Bar1: TRzProgressBar;
Label1: TLabel;
ListView1: TRzListView;
ADOConn: TADOConnection;
ADOQ: TADOQuery;
DS_Q: TDataSource;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Btn_CancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
procedure Btn_delClick(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Btn_okClick(Sender: TObject);
procedure Add_bak_file;
private
n:integer;
str_bak:string; //存放备份文件名称
S_server,S_database,S_user:string;
str_con:string;
public
function data_backup:boolean;
end;
var
Frm_data_backup: TFrm_data_backup;
implementation
uses U_dm,u_main;
{$R *.dfm}
function TFrm_data_backup.data_backup:boolean;
var
temp_bak:string;
ListItem: TListItem;
Exit_BackFile:Boolean;
n:integer;
begin
try
result:=False;
temp_bak:='d:\backup\'+datetostr(now)+'.bak';
//连接数据库
if not Adoconn.Connected then begin
Adoconn.Connected:=False;
Adoconn.KeepConnection:=False;
Adoconn.ConnectionString:=str_con; //接口
Adoconn.LoginPrompt:=False;
Adoconn.Connected:=true;
end;
//打开数据集
ADOQ.Close;
ADOQ.SQL.Clear;
ADOQ.SQL.Add('backup database '+S_database+' to disk ='''+temp_bak+'''');
ADOQ.ExecSQL;
//添加备份文件
Exit_BackFile:=false;
for n:=0 to listview1.Items.Count-1 do begin
if listview1.Items[n].Caption=datetostr(now)+'.bak' then begin
Exit_BackFile:=true;
end;
end;
if Exit_BackFile=false then begin
listitem:=listview1.items.Add;
listitem.Caption:=datetostr(now)+'.bak';
listitem.ImageIndex:=0;
end;
Result:=True;
except
Result:=False;
bar1.Percent:=0;
end;
end;
procedure TFrm_data_backup.Add_bak_file;
var
ListItem: TListItem;
I:integer;
begin
FileListBox1.Directory:='d:\backup\';
filelistbox1.Update;
for i:=0 to FileListBox1.Items.Count-1 do begin
listitem:=listview1.items.Add;
listitem.Caption:=FileListBox1.Items.Strings[i];
listitem.ImageIndex:=0;
end;
end;
procedure TFrm_data_backup.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TFrm_data_backup.Btn_CancelClick(Sender: TObject);
begin
dm.Adoconn.Connected:=false;
Frm_data_backup.Close;
end;
procedure TFrm_data_backup.FormCreate(Sender: TObject);
begin
//接口-----------------------------------------------
S_server:=u_main.str_server;
S_database:=u_main.str_database;
S_user:=u_main.str_user;
//---------------------------------------------------
str_con:='Provider=SQLOLEDB.1;Password=sxxy;User ID=sa;Initial Catalog='+S_database+';Data Source='+S_server;
Add_bak_file;
end;
procedure TFrm_data_backup.ListView1Change(Sender: TObject;
Item: TListItem; Change: TItemChange);
Begin
if (ListView1.SelCount>0) and (not timer1.Enabled) then begin
Btn_del.Enabled:=True;
Btn_ok.Enabled:=True;
str_bak:=listview1.Selected.Caption;
Frm_data_backup.Caption:='数据库备份--'+str_bak;
end
else begin
Btn_del.Enabled:=False;
Btn_ok.Enabled:=True;
Frm_data_backup.Caption:='数据库备份';
end;
end;
procedure TFrm_data_backup.Btn_delClick(Sender: TObject);
var
path:string;
begin
path:='d:\backup\'+listview1.Selected.Caption;
Deletefile(path);
if messagedlg('你确实要删除'+str_bak+'备份文件吗?',mtConfirmation,[mbYes,mbNo],0)=mrYes then begin
listview1.Clear;
add_bak_file;
Btn_del.Enabled:=False;
end
else begin
Btn_del.Enabled:=False;
Btn_ok.Enabled:=False;
end;
end;
procedure TFrm_data_backup.Timer1Timer(Sender: TObject);
begin
n:=n+1;
frm_data_backup.caption:='数据库备份--正在生成'+datetostr(now)+'.bak'+'数据备份文件';
Bar1.Percent:=n*20;
if n=3 then data_backup;
if n=5 then begin
Timer1.Enabled:=False;
Bar1.Percent:=0;
frm_data_backup.caption:='数据库备份--'+datetostr(now)+'.bak'+'文件备份完成';
N:=0;
End;
end;
procedure TFrm_data_backup.Btn_okClick(Sender: TObject);
begin
Timer1.Enabled:=True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -