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

📄 backup.cpp

📁 速达开源ERP系统
💻 CPP
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Backup.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecListForm"
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma resource "*.dfm"
TfrmBackup *frmBackup;
//---------------------------------------------------------------------------
__fastcall TfrmBackup::TfrmBackup(TComponent* Owner)
        : TRecListForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmBackup::FormShow(TObject *Sender)
{
     TComResultSet *BackupDir=NewResultSet();
     BackupDir->Open("select CompanyBackupPath from sdCompany where CompanyCode='"+g_sdCompanyCode+"'","CompanyCode");
     if(BackupDir->RecordCount>0)
       seBackupDir->Text=BackupDir->FieldByName("CompanyBackupPath");
     else
       seBackupDir->Text="";
     BackupDir->Close();
     delete BackupDir;
}
//---------------------------------------------------------------------------
void __fastcall TfrmBackup::BtnCancelClick(TObject *Sender)
{
 Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmBackup::BtnBackupClick(TObject *Sender)
{
    TComResultSet *Backup;
    AnsiString DatabaseName,FileName,UserCode,ExeSql;
    int OwnSpid,Spid=-1;
    if(seBackupDir->Text.IsEmpty())
    {
      ShowMessageWindow("备份文件名不能为空",mwsError);
      return;
    }
    if(ExtractFilePath(seBackupDir->Text).IsEmpty())
    {
      ShowMessageWindow("备份文件名不合法",mwsError);
      return;
    }
    if(ExtractFileExt(seBackupDir->Text).IsEmpty())
      seBackupDir->Text=seBackupDir->Text+".dat";
    if(FileExists(seBackupDir->Text))
    {
      if(ShowMessageWindow("该备份文件名已存在,是否覆盖?",mwsConfirmation)==IDNO)
         return;
      else
        DeleteFile(seBackupDir->Text);
    }
    try
    {
      StartWaitForm("正在备份数据,请稍候...");
      Backup=NewResultSet();
      ExeSql="Select OwnSpid=@@Spid" ;                //查询当前进程
      Backup->Open(ExeSql,"");
      if(Backup->RecordCount>0)
      {
        Backup->MoveFirst();
        OwnSpid=Backup->FieldByName("OwnSpid").ToInt();
      }
      Backup->Close();
      if(OwnSpid<0)
        throw Exception("不能确认当前进程!");
      ExeSql="exec sp_Who" ;                    //查询当前所连接数据库名
      Backup->Open(ExeSql,"");
      if(Backup->RecordCount>0)
      {
        Backup->MoveFirst();
        while(!Backup->Eof)
        {
          Spid=Backup->FieldByName("Spid").ToInt();
          if(Spid==OwnSpid)
          {
            DatabaseName=Backup->FieldByName("dbname");
            break;
          }
          Backup->MoveNext();
        }
      }
      if(DatabaseName.IsEmpty())
        throw Exception("不能确认当前连接数据库!");
      DatabaseName=DatabaseName.Trim();
      FileName=seBackupDir->Text.Trim();
      UserCode=g_sdUserCode;
      ExeSql=" Exec sddb_Backup '"+DatabaseName+"','"+FileName+"','"+UserCode+"'";
      try
      {
        Backup->Execute(ExeSql);
      }
      catch(...)
      {
        ShowMessageWindow("数据备份失败,请重新操作",mwsError);
      }
      ShowMessageWindow("数据备份完成!",mwsInformation);
      Close();
    }
    __finally
    {
      EndWaitForm();
      delete Backup;
    }

}
//---------------------------------------------------------------------------
void __fastcall TfrmBackup::seBackupDirButtonClick(TObject *Sender)
{
  if(!seBackupDir->Text.IsEmpty())
     OpenBackupDialog->FileName=seBackupDir->Text;
  if(OpenBackupDialog->Execute())
    seBackupDir->Text=OpenBackupDialog->FileName;
}
//---------------------------------------------------------------------------
 void __fastcall TfrmBackup::InitEditControl()
 {
   seBackupDir->Text="";
 }

void __fastcall TfrmBackup::FormClose(TObject *Sender,
      TCloseAction &Action)
{
 TRecListForm::FormClose(Sender,Action);
  g_ClientComm->DelMsgForm(this->Name);
 }
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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