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

📄 backuprecovery.cpp

📁 这是采用mfc编写的工资管理系统
💻 CPP
字号:
// BackupRecovery.cpp : implementation file
//

#include "stdafx.h"
#include "salarymanagement.h"
#include "BackupRecovery.h"
#include "USkin.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CBackupRecovery dialog


CBackupRecovery::CBackupRecovery(CWnd* pParent /*=NULL*/)
	: CDialog(CBackupRecovery::IDD, pParent)
{
	//{{AFX_DATA_INIT(CBackupRecovery)
	m_lpzFileName = _T("");
	m_recovery = 0;
	m_style = 0;
	//}}AFX_DATA_INIT

	m_hIcon=AfxGetApp()->LoadIcon(IDI_BACKUP);
	m_bOpen=FALSE;
	m_ado.OnInitADOConn();
}

CBackupRecovery::~CBackupRecovery()
{
	m_ado.ExitConnect();
}

void CBackupRecovery::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CBackupRecovery)
	DDX_Text(pDX, IDC_EDIT1, m_lpzFileName);
	DDX_Radio(pDX, IDC_RADIO1, m_recovery);
	DDX_Radio(pDX, IDC_RADIO3, m_style);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CBackupRecovery, CDialog)
	//{{AFX_MSG_MAP(CBackupRecovery)
	ON_BN_CLICKED(IDC_OPENFILE, OnOpenfile)
	ON_WM_DESTROY()
	ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
	ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CBackupRecovery message handlers
extern CSalaryManagementApp theApp;

BOOL CBackupRecovery::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	CString str=theApp.m_CurrentDirectory+"\\Skin\\3.u3";
	USkinLoadSkin(str);	
	
	CenterWindow(CWnd::GetDesktopWindow());
	
	SetIcon(m_hIcon,TRUE);
	SetIcon(m_hIcon,FALSE);

	return TRUE; 
}

void CBackupRecovery::OnOK() 
{
	UpdateData();

	//拷贝文件
	SHFILEOPSTRUCT   fileop;   
	fileop.hwnd  = m_hWnd;   
	fileop.wFunc = FO_COPY; 
	fileop.fFlags= FOF_NOCONFIRMATION|FOF_ALLOWUNDO;   

	if(m_style==0)
		m_lpzFileName="C:\\Windows\\System32\\SalaryManagement.mdb";
	if(m_lpzFileName=="")
	{
		AfxMessageBox("请选择文件!");
		return;
	}

	//数据库备份
	if(m_recovery==0)
	{
		ASSERT(m_recovery==0);
		fileop.pFrom = theApp.m_DBFileName;
		fileop.pTo   = m_lpzFileName; 
		
		CFileFind find;
		int IsFinded =find.FindFile(m_lpzFileName);
		if(IsFinded)
		{
			if(IDYES==AfxMessageBox("备份已经存在,是否覆盖?",MB_YESNO))
			//存在,则先把原先的备份文件删除,再备份
				DeleteFile(m_lpzFileName);
			else return;
		}
		
		if(SHFileOperation(&fileop) !=  0)
		{   
			MessageBox("数据库备份失败","工资管理系统");
		}
		else MessageBox("数据备份完成","工资管理系统");

		/*		CString str;
		str.Format("backup database EarthData to disk='%s'",m_lpzFileName);
		m_ado.ExecuteSQL((_bstr_t)str);
		//关闭数据库
		ExitConnect();
		str.Format("数据已备份至 %s",m_lpzFileName);
		AfxMessageBox(str);*/
	}
	else
	{
		fileop.pFrom = m_lpzFileName;
		fileop.pTo   = theApp.m_DBFileName;
		
		if(SHFileOperation(&fileop) !=  0)
		{   
			MessageBox("数据库恢复失败","工资管理系统");
		}
		else MessageBox("数据恢复完成","工资管理系统");
/*		// 创建到Master数据库的连接 ,注意是master数据库
		try
		{
			// 创建Connection对象
			m_pConnection.CreateInstance("ADODB.Connection");
			// 设置连接字符串,必须是BSTR型或者_bstr_t类型
			_bstr_t strConnect = "Provider=SQLOLEDB; Server=ntserver;Database=master; uid=sa; pwd=sa;";
			m_pConnection->Open(strConnect,"","",adModeUnknown);
		}
		// 捕捉异常
		catch(_com_error e)
		{
			// 显示错误信息
			AfxMessageBox(e.Description());
		}
		_bstr_t vSQL;
		vSQL = "restore database Stock from disk= 'C:\EarthData.bak'";
		m_pConnection->Execute(vSQL,NULL,adCmdText);
*/		
	}
}

void CBackupRecovery::OnOpenfile()
{
	UpdateData();

	CString str;
	if(m_recovery==0)
	{
		str="请选择备份文件夹";
		m_bOpen=FALSE;
	}
	else 
	{
		str="请选择要用来恢复的文件";
		m_bOpen=TRUE;
	}

	CString lpszFilter="Access数据库文件(*.mdb)|*.mdb||";
	CFileDialog dlg(m_bOpen,NULL,NULL,
		OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,(LPCTSTR)lpszFilter);
	dlg.m_ofn.lpstrTitle=str;

	try{
		if(IDOK==dlg.DoModal())
		{
			m_lpzFileName=dlg.GetPathName();
			if(m_lpzFileName.Right(4)!=".mdb")
				m_lpzFileName+=".mdb";
			UpdateData(FALSE);
		}
	}
	catch(CMemoryException *e)
	{
		char error[MAX_PATH];
		e->GetErrorMessage(error,MAX_PATH);
		AfxMessageBox(error);
		delete e;
	}
}

void CBackupRecovery::OnDestroy() 
{
	CDialog::OnDestroy();
	
	USkinRemoveSkin();
		
	theApp.m_pMainWnd->SetWindowPos(&wndTop,
		0,0,0,0,SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW);		
}


void CBackupRecovery::OnRadio3() 
{
	m_style=0;
	GetDlgItem(IDC_EDIT1)->EnableWindow(FALSE);
	GetDlgItem(IDC_OPENFILE)->EnableWindow(FALSE);
}

void CBackupRecovery::OnRadio4() 
{
	m_style=1;
	GetDlgItem(IDC_EDIT1)->EnableWindow(TRUE);
	GetDlgItem(IDC_OPENFILE)->EnableWindow(TRUE);
}

⌨️ 快捷键说明

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