unitdatarestore.pas
来自「一套宾馆管理系统」· PAS 代码 · 共 232 行
PAS
232 行
unit UnitDataRestore;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, Tabs, StdCtrls, ExtCtrls, Grids, DBGrids,
ADODB, DB;
type
TfrmDataRestore = class(TForm)
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
tbnRestore: TToolButton;
tbnViewLog: TToolButton;
Panel1: TPanel;
Splitter1: TSplitter;
Panel2: TPanel;
GroupBox1: TGroupBox;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
lvwBackup: TListView;
GroupBox2: TGroupBox;
DBGrid: TDBGrid;
tbnExit: TToolButton;
Label1: TLabel;
EdtDate: TEdit;
Label2: TLabel;
cboDevice: TComboBox;
ADOcmd: TADOCommand;
ADOStored: TADOStoredProc;
ADOQuery: TADOQuery;
ADOViewLog: TADOQuery;
DataSource: TDataSource;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure tbnExitClick(Sender: TObject);
procedure tbnRestoreClick(Sender: TObject);
private
strCon:string;
{ Private declarations }
public
{ Public declarations }
end;
var
frmDataRestore: TfrmDataRestore;
implementation
uses UnitMain;
{$R *.dfm}
procedure TfrmDataRestore.FormCreate(Sender: TObject);
begin
frmMain.ReadINI ;
strCon:=frmMain.strCon ;
strcon:=stringreplace(strcon,'hotel','master',[rfIgnoreCase]);
end;
procedure TfrmDataRestore.FormShow(Sender: TObject);
var
strSmt:string;
xx:TListColumn;
yy:TlistItem;
zz:TColumn;
begin
pagecontrol1.ActivePageIndex:=0;
tbnrestore.Enabled :=true;
tbnviewlog.Enabled :=false;
adoquery.Close;
adoquery.ConnectionString:=strCon;
adoquery.sql.Clear ;
adoquery.sql.Add('select * from backupdevice order by back_adddate asc ');
try
adoquery.Open ;
cbodevice.Items.Clear;
while not adoquery.Eof do
begin
cbodevice.Items.add(adoquery.Fields[1].asstring);
adoquery.Next;
end;
finally
adoquery.Close;
cbodevice.ItemIndex :=0;
edtdate.Text:=datetimetostr(now());
end;
//---------init listview
xx:=lvwbackup.Columns.Add ;
xx.Caption :='备份设备名称';
xx.Width:=100;
//----------
xx:=lvwBackup.Columns.add;
xx.Caption :='备份文件路径';
xx.Width:=100;
//-----------
xx:=lvwbackup.Columns.add;
xx.Caption :='备份文件名';
xx.Width :=150;
//------------
xx:=lvwbackup.Columns.add;
xx.Caption :='备份创建时间';
xx.Width:=150;
//-------------init end
strSmt:='select back_name,back_filepath,backup_name,createtime from ';
strSmt:=strSmt+' backupfilelist a left outer join backupdevice b ';
strSmt:=strSmt+'on a.device_no=b.back_id ';
strSmt:=strSmt+'where back_name='''+cbodevice.text+'''';
strSmt:=strSmt+'order by createtime desc ';
adoquery.Close;
adoquery.SQL.clear;
adoquery.SQL.Add(strSmt);
adoquery.ConnectionString:=strCon;
adoquery.Open ;
lvwbackup.Items.Clear ;
while not adoquery.Eof do
begin
yy:=lvwbackup.Items.Add ;
yy.Caption:=adoquery.Fields[0].AsString ;
yy.SubItems.Add(adoquery.Fields[1].AsString);
yy.SubItems.Add(adoquery.Fields[2].AsString);
yy.SubItems.Add(adoquery.Fields[3].AsString);
adoquery.Next;
end;
adoquery.Close;
//------------操作日志
strSmt:='select a.retore_id,a.retore_date,c.back_name,c.back_filepath,b.backup_name,b.createtime,a.memo ';
strSmt:=strSmt+' from restorelist a left outer join backupfilelist b ' ;
strSmt:=strSmt+' on a.backfile_id=b.file_no';
strSmt:=strSmt+' left outer join backupdevice c ' ;
strSmt:=strSmt+' on b.device_no=c.back_id' ;
strSmt:=strSmt+' order by a.retore_id desc ' ;
adoquery.Close;
adoquery.SQL.Clear ;
adoquery.SQL.Add(strSmt);
adoquery.ConnectionString:=strCon;
adoquery.Open ;
//--------init grid
zz:=dbgrid.Columns.Add ;
zz.Title.Caption:='恢复数据时间';
zz.FieldName:=adoquery.Fields[1].DisplayName ;
zz.Width :=100;
//--------
zz:=dbgrid.Columns.Add ;
zz.Title.Caption:='备份设备名';
zz.FieldName:=adoquery.Fields[2].DisplayName ;
zz.Width :=100;
//---------
zz:=dbgrid.Columns.Add ;
zz.Title.Caption:='备份路径';
zz.FieldName:=adoquery.Fields[3].DisplayName ;
zz.Width :=100;
//----------
zz:=dbgrid.Columns.Add ;
zz.Title.Caption:='备份文件名';
zz.FieldName:=adoquery.Fields[4].DisplayName ;
zz.Width :=100;
//----------
zz:=dbgrid.Columns.Add ;
zz.Title.Caption:='备份文件创建时间';
zz.FieldName:=adoquery.Fields[5].DisplayName ;
zz.Width :=100;
//----------
zz:=dbgrid.Columns.Add ;
zz.Title.Caption:='数据恢复结果';
zz.FieldName:=adoquery.Fields[6].displayname ;
zz.Width :=100;
//-----------show data in the grid
datasource.DataSet:=adoquery;
dbgrid.DataSource:=datasource;
end;
procedure TfrmDataRestore.PageControl1Change(Sender: TObject);
begin
if pagecontrol1.ActivePageIndex=0 then
begin
tbnrestore.Enabled :=true;
tbnviewlog.Enabled :=false;
end
else
begin
tbnrestore.Enabled :=false ;
tbnviewlog.Enabled :=true;
end
end;
procedure TfrmDataRestore.tbnExitClick(Sender: TObject);
begin
frmDataRestore.Close ;
end;
procedure TfrmDataRestore.tbnRestoreClick(Sender: TObject);
var
stmt:string;
filename:string;
xx:TParameter;
begin
filename:=lvwbackup.Selected.SubItems.Strings[0]+'\'+lvwbackup.Selected.SubItems.Strings[1];
stmt:=strCon;
adostored.ProcedureName:='Restoredatabase';
adostored.ConnectionString:=stmt;
adostored.Parameters.Clear;
//-------parameter
xx:=adostored.Parameters.AddParameter;
xx.Name :='filename';
xx.Value:=filename;
xx.DataType :=ftstring;
xx.Direction :=pdinput;
xx.Size :=300;
//--------
xx:=adostored.Parameters.AddParameter;
xx.Name:='result';
xx.DataType :=ftstring;
xx.Direction :=pdoutput;
xx.Size :=30;
adostored.ExecProc ;
if adostored.Parameters.ParamByName('result').Value ='success' then
begin
showmessage('恢复成功');
end
else
showmessage('恢复失败');
end;
end.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?