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

📄 dr_main.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
📖 第 1 页 / 共 3 页
字号:
unit DR_Main;

{
代码单元名称:通用数据库恢复工具主窗口
从属软件:大连资金清算中心打码机管理信息系统
开发单位:大连理工大学计算机技术研究所软件工程研究室
作者:王树润
时间:2001,1,30
}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, Grids, DBGrids, ExtCtrls, Db, ADODB;

type
  TDR_DfmMain = class(TForm)
    PageControl1: TPageControl;
    GeneralTabSheet: TTabSheet;
    OptionTabSheet: TTabSheet;
    ConfirmButton: TButton;
    Button2: TButton;
    Button3: TButton;
    RestoreModeRadioGroup: TRadioGroup;
    BackupHistoryGroupBox: TGroupBox;
    BackupHistoryDBGrid: TDBGrid;
    BackupDeviceGroupBox: TGroupBox;
    DestinationListBox: TListBox;
    FullBackupTimeComboBox: TComboBox;
    Label4: TLabel;
    AfterRestoreStatusRadioGroup: TRadioGroup;
    GroupBox1: TGroupBox;
    ReplaceDatabaseCheckBox: TCheckBox;
    DestinationDatabaseMemo: TMemo;
    Label1: TLabel;
    SourceDatabaseMemo: TMemo;
    Label3: TLabel;
    Label2: TLabel;
    RestoreDatabaseNameComboBox: TComboBox;
    Label5: TLabel;
    AfterRestorDatabaseNameComboBox: TComboBox;
    Button4: TButton;
    Button5: TButton;
    DBGrid1: TDBGrid;
    Label6: TLabel;
    Animate1: TAnimate;
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure RestoreModeRadioGroupClick(Sender: TObject);
    procedure RestoreDatabaseNameComboBoxChange(Sender: TObject);
    procedure FullBackupTimeComboBoxChange(Sender: TObject);
    procedure ConfirmButtonClick(Sender: TObject);
    procedure ReplaceDatabaseCheckBoxClick(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure AfterRestorDatabaseNameComboBoxChange(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TADOQueryAfterScroll(DataSet: TDataSet);
  private
    { Private declarations }
  public
    { Public declarations }
    MyServerName: string;
    DatabaseNames: Tstrings;
    procedure ReplaceDatabaseCheck;
  end;

procedure SetWork;

implementation

uses DR_AddBackupDevice, DR_DataModule1, Main, PublicUnit;

{$R *.DFM}

procedure SetWork;
var
  DR_DfmMain: TDR_DfmMain;
  ServerName: string;
begin
  if
    MessageDlg('该项功能必须在数据库所在的机器上进行,您当前的机器是数据库所在的机器吗?',
    mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
    Exit;
  if
    MessageDlg('请确定所有与数据库的连接包括其它机器上本软件的运行是否都已终止?',
    mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
    Exit;
  ServerName := FrmMain.ServerName;
  FrmMain.Refresh;
  if ServerName = '' then
    Exit;
  Screen.Cursor := crHourGlass;
  FrmMain.Refresh;
  Application.CreateForm(TDR_DfmMain, DR_DfmMain);
  DR_DfmMain.MyServerName := ServerName;
  Screen.Cursor := crDefault;
  DR_DfmMain.ShowModal;
  DR_DfmMain.Free;
end;

//窗体==========================================================================

procedure TDR_DfmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  DatabaseNames.Free;
  DR_DfmDataModule1.RestoreDatabaseADOQuery.Close;
  DR_DfmDataModule1.FullBackupTimeADOQuery.Close;
  DR_DfmDataModule1.BackupHistoryADOQuery.Close;
  DR_DfmDataModule1.ADOConnection1.Close;
  DR_DfmDataModule1.ADOConnection2.Close;
end;

procedure TDR_DfmMain.FormShow(Sender: TObject);
var
  i: integer;
begin
  Screen.Cursor := crHourGlass;
  Refresh;
  DR_DfmDataModule1.ADOConnection1.ConnectionString :=
    'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + FrmMain.DbUser
    +
    ';Password=' + FrmMain.DbPass + ';Initial Catalog=master;Data Source=' +
    PublicUnit.ServerName;
  DR_DfmDataModule1.ADOConnection2.ConnectionString :=
    'Provider=SQLOLEDB.1;Persist Security Info=False;User ID=' + FrmMain.DbUser
    +
    ';Password=' + FrmMain.DbPass + ';Initial Catalog=msdb;Data Source=' +
    PublicUnit.ServerName;
  DatabaseNames := TStringList.Create;
  with DR_DfmDataModule1.RestoreDatabaseADOQuery do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Select * From SysDatabases');
    try
      Open;
    except
      Screen.Cursor := crDefault;
      ShowMessage('系统数据库受到破坏,请与系统管理员联系!');
      Exit;
    end;
    Last;
    AfterRestorDatabaseNameComboBox.Items.Add(FrmMain.DbName);
    RestoreDatabaseNameComboBox.Items.Add(FrmMain.DbName);
    while not Bof do
    begin
      DatabaseNames.Add(FieldByName('Name').AsString);
      Prior;
    end;
  end;
  AfterRestorDatabaseNameComboBox.ItemIndex := 0;
  RestoreDatabaseNameComboBox.ItemIndex := 0;
  RestoreModeRadioGroup.ItemIndex := 0;
  BackupHistoryGroupBox.Visible := True;
  BackupDeviceGroupBox.Visible := False;
  FullBackupTimeComboBox.Items.Clear;
  with DR_DfmDataModule1.FullBackupTimeADOQuery do
  begin
    Close;
    Sql.Clear;
    Sql.Add('Select backup_start_date ');
    Sql.Add('From BackupSet ');
    Sql.Add('Where Type=''D'' ');
    Sql.Add('And database_name=''' + RestoreDatabaseNameComboBox.Text + '''');
    try
      Open;
    except
      Screen.Cursor := crDefault;
      ShowMessage('系统数据库受到破坏,请与系统管理员联系!');
      Exit;
    end;
    Last;
    while not Bof do
    begin
      FullBackupTimeComboBox.Items.Add(FieldByName('backup_start_date').AsString);
      Prior;
    end;
  end;
  FullBackupTimeComboBox.ItemIndex := 0;
  with DR_DfmDataModule1.BackupHistoryADOQuery do
  begin
    Close;
    Sql.Clear;
    if FullBackupTimeComboBox.Items.IndexOf(FullBackupTimeComboBox.Text) = 0
      then
      Sql.Add('Select * From BackupSet Where backup_start_date>=''' +
        FullBackupTimeComboBox.Text + ''' and database_name=''' +
        RestoreDatabaseNameComboBox.Text + '''')
    else
      Sql.Add('Select * From BackupSet Where backup_start_date>=''' +
        FullBackupTimeComboBox.Text + ''' and backup_start_date<''' +
        FullBackupTimeComboBox.Items[FullBackupTimeComboBox.Items.IndexOf(FullBackupTimeComboBox.Text) - 1] + ''' and database_name=''' + RestoreDatabaseNameComboBox.Text +
        '''');
    try
      Open;
    except
      ShowMessage('error');
      Exit;
    end;
    FieldByName('backup_set_id').Visible := False;
    FieldByName('backup_set_uuid').Visible := False;
    FieldByName('media_set_id').Visible := False;
    FieldByName('first_family_number').Visible := False;
    FieldByName('first_media_number').Visible := False;
    FieldByName('last_family_number').Visible := False;
    FieldByName('last_media_number').Visible := False;
    FieldByName('catalog_family_number').Visible := False;
    FieldByName('catalog_media_number').Visible := False;
    FieldByName('position').Visible := False;
    FieldByName('expiration_date').Visible := False;
    FieldByName('software_vendor_id').Visible := False;
    FieldByName('description').Visible := False;
    FieldByName('user_name').Visible := False;
    FieldByName('software_major_version').Visible := False;
    FieldByName('software_minor_version').Visible := False;
    FieldByName('software_build_version').Visible := False;
    FieldByName('time_zone').Visible := False;
    FieldByName('mtf_minor_version').Visible := False;
    FieldByName('First_Lsn').Visible := False;
    FieldByName('Last_Lsn').Visible := False;
    FieldByName('Checkpoint_Lsn').Visible := False;
    FieldByName('Database_Backup_Lsn').Visible := False;
    FieldByName('database_creation_date').Visible := False;
    FieldByName('backup_start_date').Visible := False;
    FieldByName('sort_order').Visible := False;
    FieldByName('code_page').Visible := False;
    FieldByName('compatibility_level').Visible := False;
    FieldByName('database_version').Visible := False;
    FieldByName('machine_name').Visible := False;
    FieldByName('name').DisplayLabel := '备份后库名';
    FieldByName('backup_finish_date').DisplayLabel := '备份完成时间';
    FieldByName('type').DisplayLabel := '备份类型';
    FieldByName('backup_size').DisplayLabel := '备份容量';
    FieldByName('database_name').DisplayLabel := '数据库名称';
    FieldByName('server_name').DisplayLabel := '服务器名称';
  end;
  BackupHistoryDBGrid.DataSource := DR_DfmDataModule1.BackupHistoryDataSource;
  for i := 0 to BackupHistoryDBGrid.FieldCount - 1 do
    BackupHistoryDBGrid.Fields[i].DisplayWidth := 1;
  AfterRestoreStatusRadioGroup.ItemIndex := 1;
  ReplaceDatabaseCheckBox.Checked := False;
  DestinationDatabaseMemo.ReadOnly := True;
  DR_DfmDataModule1.BackupDeviceContentADOQuery.AfterScroll :=
    TADOQueryAfterScroll;
  Screen.Cursor := crDefault;
end;

//关闭==========================================================================

procedure TDR_DfmMain.Button2Click(Sender: TObject);
begin
  Close;
end;

//选择恢复方式==================================================================

procedure TDR_DfmMain.RestoreModeRadioGroupClick(Sender: TObject);
begin
  ReplaceDatabaseCheck;
  if RestoreModeRadioGroup.ItemIndex = 0 then
  begin
    BackupHistoryGroupBox.Visible := True;
    BackupDeviceGroupBox.Visible := False;
  end;
  if RestoreModeRadioGroup.ItemIndex = 1 then
  begin
    BackupHistoryGroupBox.Visible := False;
    BackupDeviceGroupBox.Visible := True;
  end;
end;

//添加备份设备==================================================================

⌨️ 快捷键说明

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