uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, jpeg, ExtCtrls, Buttons, ComCtrls;type
  TForm_DataBackup = class(TForm)
    Panel1: TPanel;
    Image1: TImage;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Button1: TButton;
    SaveDialog1: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
   
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form_DataBackup: TForm_DataBackup;implementationuses Unit2;{$R *.dfm}procedure TForm_DataBackup.FormCreate(Sender: TObject);
begin
   Edit1.Text:='E:\mywork 在 Lijq 上\BAK\Data'+FormatDateTime('YYYYMMDD',Now())+'.bak';
   SaveDialog1.FileName:='Data'+FormatDateTime('YYYYMMDD',Now())+'.bak';
end;procedure TForm_DataBackup.Button1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then
     Edit1.Text:= ExtractFilepath(Application.ExeName);
end;
procedure TForm_DataBackup.BitBtn1Click(Sender: TObject);
begin
    DataModule2.ADOQuery1.Close;
try
   with DataModule2.ADOQuery1 do
    begin
     Close;
     SQL.Clear;
     SQL.Add('backup database test to disk=''Edit1.Text''with init');
     ExecSQL;
    end ;
     MessageDlg('数据备份成功!文件存放在'+Edit1.Text+'中!',mtInformation,[mbOK],0);
except
    on e:exception do
    MessageDlg('数据备份失败,请检查磁盘是否准备好或路径是否正确!',mtError,[mbOK],0);
end;
    DataModule2.ADOQuery1.ExecSQL;
end;
procedure TForm_DataBackup.BitBtn2Click(Sender: TObject);
begin
  Close;
end;end.

解决方案 »

  1.   

    unit DataBackUp;interfaceuses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, ComCtrls, Buttons, StdCtrls, ADODB,StrUtils;type
    TfrmDataBack = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    spdExit: TBitBtn;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    btnPath: TSpeedButton;
    Label3: TLabel;
    ProgressBar1: TProgressBar;
    btnBackUp: TSpeedButton;
    ADOCommand1: TADOCommand;
    StatusBar1: TStatusBar;
    OpenDialog1: TOpenDialog;
    Label4: TLabel;
    Edit3: TEdit;
    btnChoice: TSpeedButton;
    Label5: TLabel;
    ProgressBar2: TProgressBar;
    btnRestore: TSpeedButton;
    procedure btnBackUpClick(Sender: TObject);
    procedure btnPathClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure btnChoiceClick(Sender: TObject);
    procedure btnRestoreClick(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;var
    frmDataBack: TfrmDataBack;implementationuses main,myDataSource,GetDirectory;
    {$R *.dfm}procedure TfrmDataBack.btnBackUpClick(Sender: TObject);
    var
    database,myFileName:String;
    begin
    if Trim(Edit1.Text)='' then
    begin
    Application.MessageBox('备份前请先确定数据库要备份至哪个文件夹!','请确认',MB_OK+MB_IconInformation);
    Edit1.SetFocus;
    Exit;
    end;
    StatusBar1.SimpleText:= ' 正在备份中...';
    ProgressBar1.Max := 100;
    ProgressBar1.Min := 0;
    ProgressBar1.Position := 0;
    ProgressBar1.Step := 20;
    database:='你的数据库名';
    myFileName:=Trim(Edit1.Text)+Trim(Edit2.Text);
    Screen.Cursor:=crHourGlass;
    mDataModule.ADOConnection1.Close;
    begin
    try
    ADOCommand1.CommandText := 'use Master';
    ProgressBar1.StepIt;
    Application.ProcessMessages;
    ADOCommand1.Execute;
    ADOCommand1.CommandText := 'execute sp_helpdevice';
    ProgressBar1.StepIt;
    Application.ProcessMessages;
    ADOCommand1.Execute;
    ProgressBar1.stepit;
    ADOCommand1.CommandText := 'backup database ' + database + ' to disk=''' + myFileName + ''' with init';
    ProgressBar1.StepIt;
    Application.ProcessMessages;
    ADOCommand1.Execute;
    Application.ProcessMessages;
    ADOCommand1.CommandText := 'Use ' + database;
    ProgressBar1.StepIt;
    ADOCommand1.Execute;
    Application.MessageBox(pchar('数据库已经成功备份到 ' + myFileName + '!可删除以前的备份文件'), '提示', mb_ok + mb_iconinformation);
    StatusBar1.SimpleText := '';
    ProgressBar1.Position := 0;
    try
    mDataModule.ADOConnection1.Connected := True;
    except
    begin
    StatusBar1.SimpleText := '';
    application.MessageBox('无法重新接连数据库!', '提示', mb_ok + mb_iconerror);
    abort;
    end;
    end;
    self.Close;
    except
    on Exception do
    if mDataModule.ADOConnection1.InTransaction then
    mDataModule.ADOConnection1.RollbackTrans;
    end;
    end;
    Screen.Cursor:=crArrow;
    end;procedure TfrmDataBack.btnPathClick(Sender: TObject);
    var
    myPath:String;
    begin
    if frmGetDirectory.ShowModal = mrOk then
    begin
    myPath:=Trim(frmGetDirectory.Edit1.Text);
    if RightStr(myPath,1)='\' then
    Edit1.Text:=myPath
    else
    Edit1.Text:=myPath+'\';
    end;
    end;procedure TfrmDataBack.FormShow(Sender: TObject);
    begin
    PageControl1.ActivePageIndex:=0;
    Edit1.Text:='';
    Edit2.Text:='备份' + FormatDateTime('yyyy-mm-dd', frmMain.SysDate)+'.BAK';
    Edit3.Text:='';
    StatusBar1.SimpleText:='';
    end;procedure TfrmDataBack.btnChoiceClick(Sender: TObject);
    begin
    with OpenDialog1 do
    begin
    Title:='文件选择';
    if execute then
    Edit3.Text:=OpenDialog1.FileName;
    end;
    end;procedure TfrmDataBack.btnRestoreClick(Sender: TObject);
    var
    database,myFileName:String;
    begin
    if Trim(Edit3.Text)='' then
    begin
    Application.MessageBox('请确定要恢复的备份文件名!','请确认',MB_OK+MB_IconInformation);
    Edit3.SetFocus;
    Exit;
    end;
    if Application.MessageBox('请确保无其他程序(如打开了企业管理器),正在使用本数据库,否则,还原无法进行!','请确认',mb_okcancel+mb_iconinformation)=idcancel then
    begin
    Abort;
    end;
    StatusBar1.SimpleText:= ' 正在恢复备份中...';
    ProgressBar2.Max := 100;
    ProgressBar2.Min := 0;
    ProgressBar2.Position := 0;
    ProgressBar2.Step := 20;
    database:='工商银行客户管理';
    myFileName:=Trim(Edit3.Text);
    try
    Screen.Cursor:=crHourGlass;
    if mDataModule.ADOConnection1.Connected then
    mDataModule.ADOConnection1.Close;
    sleep(1000);
    ProgressBar2.StepIt;
    ADOCommand1.CommandText := 'use Master';
    ADOCommand1.Execute;
    sleep(600);
    ProgressBar2.StepIt;
    adocommand1.CommandText := 'execute sp_helpdevice';
    adocommand1.Execute;
    sleep(600);
    ProgressBar2.stepit;
    adocommand1.CommandText := 'Restore database ' + database + ' From disk=''' + myFilename + ''' with replace';
    sleep(600);
    ProgressBar2.StepIt;
    try
    adocommand1.Execute;
    except
    begin
    raise exception.Create(syserrormessage(getlasterror));
    abort;
    end;
    end;
    adocommand1.CommandText := 'Use ' + database;
    sleep(600);
    ProgressBar2.StepIt;
    adocommand1.Execute;
    StatusBar1.SimpleText := '';
    application.MessageBox(pchar('数据库已经成功还原到数据库 ' + database + '!'), '提示', mb_ok + mb_iconinformation);
    ProgressBar2.Position := 0;
    try
    mDataModule.ADOConnection1.Connected := True;
    except
    begin
    application.MessageBox('无法重新接连数据库!', '提示', mb_ok + mb_iconerror);
    abort;
    end;
    end;
    except
    Application.MessageBox('有别的程序(如企业管理器)正在使用本数据库,数据无法恢复','提示',MB_OK+MB_IconInformation);
    end;
    StatusBar1.SimpleText := '';
    frmMain.GetReportDate;
    Screen.Cursor:=crArrow;
    Self.Close;
    end;end. 
    數據恢復與備份
      

  2.   

    你好,你有这个源代码对吧?你能发给我吗?我想看看你的界面,我是新手,麻烦你了。你可以加我qq,365708921,或者,msn:[email protected],网站上不一定安全,所以不敢要你的联系方式,你加我好吗?