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 + -
显示快捷键?