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

📄 datamoduleunit.pas

📁 软件可自动完成SQL Server数据库和文档的数据定时自动备份
💻 PAS
字号:
//*-----------------------------------------------------------------------------
//*  系统名称:数据自动备份系统
//*  作    者:陈春华
//*  开发时间:2005
//*  Windows2000 Server + SQL Server2000 + Delphi7
//*  功能简介:
//*              软件可自动完成SQL Server数据库和文档的数据定时自动备份,
//*          由用户选择对哪些数据库或文档进行数据备份,提供对备份、还原
//*          数据作业的管理、分析、日志跟踪等功能,备份频率不受限制。
//*-----------------------------------------------------------------------------

unit DataModuleUnit;

interface

uses
  SysUtils, Classes, ExtCtrls, IniFiles;

type
  TDM = class(TDataModule)
    DBTimer1: TTimer;   //-------------------------
    DBTimer2: TTimer;   //- 数据库自动备份定时装置
    DBTimer3: TTimer;   //-------------------------
    FileTimer1: TTimer; //-------------------------
    FileTimer2: TTimer; //-  文件自动备份定时装置(所有注解同数据库定时)
    FileTimer3: TTimer; //-------------------------
    procedure DBTimer1Timer(Sender: TObject);
    procedure DBTimer2Timer(Sender: TObject);
    procedure DBTimer3Timer(Sender: TObject);
    procedure FileTimer1Timer(Sender: TObject);
    procedure FileTimer2Timer(Sender: TObject);
    procedure FileTimer3Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  DM: TDM;

implementation

{$R *.dfm}
uses VariableUnit, BackupThreadUnit, FileBackupThreadUnit, MainUnit;
procedure TDM.DBTimer1Timer(Sender: TObject);
var
  backupThread: TBackupThread;
begin
  //^ ---
  if TimeToStr(now+StrToTime('00:02:00'))=TimeToStr(backupTime) then
    begin
      DBTimer2.Interval:=StrToInt(FloatToStr(frequency*3600*1000));
      DBTimer2.Enabled:=True;
    end;
  //^ 提前2分钟启动频率计时器
  //^ ---
  if TimeToStr(now)=TimeToStr(backupTime) then
    begin
      MainForm.StatusBar1.Panels[0].Text:='数据库'+DBName+'备份中,请稍后...';
      backupThread:=TBackupThread.Create(serverName,userName,pwsd,DBName,path);
      backupThread.Resume;
      DBTimer1.Enabled:=False;
    end;
  //^ 启动离系统启动最近一次备份
end;

procedure TDM.DBTimer2Timer(Sender: TObject);
begin
  DBTimer3.Enabled:=True; // 定时启动秒级计时器
end;

procedure TDM.DBTimer3Timer(Sender: TObject);
var
  backupThread: TBackupThread;
begin
  //^ ---
  if TimeToStr(now)=TimeToStr(backupTime) then
    begin
      MainForm.StatusBar1.Panels[0].Text:='数据库'+DBName+'备份中,请稍后...';
      backupThread:=TBackupThread.Create(serverName,userName,pwsd,DBName,path);
      backupThread.Resume;
      DBTimer3.Enabled:=False;
    end;
  //^ 启动数据库备份线程
end;

procedure TDM.FileTimer1Timer(Sender: TObject);
var
  fileBackupThread: TFileBackupThread;
  inifile: TIniFile;
begin
  if TimeToStr(now+StrToTime('00:02:00'))=TimeToStr(fileBackupTime) then
    begin
      fileTimer2.Interval:=StrToInt(FloatToStr(fileFrequency*3600*1000));
      fileTimer2.Enabled:=True;
    end;
  if TimeToStr(now)=TimeToStr(fileBackupTime) then
    begin
      if FileExists(ExtractFilePath(ParamStr(0))+'\'+fileItemName+'.ini') then
        begin
          try
            inifile:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'\'+fileItemName+'.ini');
            fileFreeSize:=inifile.ReadFloat('备份设置','目的地址空间',fileFreeSize);
            lastBackupTime:=inifile.readDateTime('备份设置','最近一次备份时刻',lastBackupTime);
          finally
            inifile.Free;
          end;
        end;
      MainForm.StatusBar1.Panels[1].Text:='文件项目'+fileItemName+'备份中,请稍后...';
      fileBackupThread:=TFileBackupThread.Create(fileSourceAdd,fileAmiAdd,fileItemName,lastBackupTime,fileFreeSize);
      fileBackupThread.Resume;
      fileTimer1.Enabled:=False;
    end;
end;
procedure TDM.FileTimer2Timer(Sender: TObject);
begin
  FileTimer3.Enabled:=True;
end;

procedure TDM.FileTimer3Timer(Sender: TObject);
var
  fileBackupThread: TFileBackupThread;
  inifile: TIniFile;
begin
  if TimeToStr(now)=TimeToStr(backupTime) then
    begin
      if FileExists(ExtractFilePath(ParamStr(0))+'\'+fileItemName+'.ini') then
        begin
          try
            inifile:=TIniFile.Create(ExtractFilePath(ParamStr(0))+'\'+fileItemName+'.ini');
            fileFreeSize:=inifile.ReadFloat('备份设置','目的地址空间',fileFreeSize);
            lastBackupTime:=inifile.ReadDateTime('备份设置','最近一次备份时刻',lastBackupTime);
          finally
            inifile.Free;
          end;
        end;
      MainForm.StatusBar1.Panels[1].Text:='文件项目'+fileItemName+'备份中,请稍后...';
      fileBackupThread:=TFileBackupThread.Create(fileSourceAdd,fileAmiAdd,fileItemName,lastBackupTime,fileFreeSize);
      fileBackupThread.Resume;
      FileTimer3.Enabled:=False;
    end;
end;

end.

⌨️ 快捷键说明

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