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

📄 funcremoveinfodlg.cpp

📁 VC++和ACCESS使用ADO连接
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	}
	else
	{
		IDStateControl(TRUE);		
	}		
}

/*********************************************************************
函数说明:	  
函数参数:	  
*********************************************************************/
void FuncRemoveInfoDlg::OnSelchangeComboRemoveCompany() 
{
	((CComboBox*)GetDlgItem(IDC_COMBO_REMOVE_DEPART))->ResetContent();	// 清空“部门”组合框的内容
	InitDeptCmB(&m_Cmb_ReM_Depart);
}

/*********************************************************************
函数说明:	  
函数参数:	 
*********************************************************************/
BOOL FuncRemoveInfoDlg::PrepareRemove(BOOL bMoreCon)
{
	CString strType;
	GetDlgItemText(IDC_COMBO_REMOVE_QUERYTYPE, strType);
	m_strReMType = strType;
	m_strReMCom  = "";
	m_strReMDepart = "";

	if (bMoreCon)
	{
		CString strCompany;
		CString strDepart;
		GetDlgItemText(IDC_COMBO_REMOVE_COMPANY, strCompany);
		GetDlgItemText(IDC_COMBO_REMOVE_DEPART, strDepart);
		m_strReMCom  = strCompany;
		m_strReMDepart = strDepart;

		if (strCompany == "请选择已有的单位")
		{
			MessageBox("请选择一个单位做为查询条件\t", "提示", MB_OK | MB_ICONEXCLAMATION);
			return FALSE;
		}
		else
		{
			if (strType == "所有")
			{
				if (strDepart == "请选择部门")	// 公司做为条件
				{
					m_ReM_strSQL.Format("(Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
									  Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
									  Employee_InActiveSer_Table.InActiveSer_NewProperty = '退休' and \
									  Employee_InActiveSer_Table.InActiveSer_Company = '%s') or \
									 (Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
									  Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
									  Employee_InActiveSer_Table.InActiveSer_NewProperty = '病退' and \
									  Employee_InActiveSer_Table.InActiveSer_Company = '%s')", strCompany, strCompany);			
				}
				else	// 公司和部门一起做条件	
				{
					m_ReM_strSQL.Format("(Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
									  Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
									  Employee_InActiveSer_Table.InActiveSer_NewProperty = '退休' and \
									  Employee_InActiveSer_Table.InActiveSer_Company = '%s' and \
									  Employee_InActiveSer_Table.InActiveSer_Department = '%s') or \
									 (Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
									  Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
									  Employee_InActiveSer_Table.InActiveSer_NewProperty = '病退' and \
									  Employee_InActiveSer_Table.InActiveSer_Company = '%s' and \
									  Employee_InActiveSer_Table.InActiveSer_Department = '%s')", 
									 strCompany, strDepart, strCompany, strDepart);
				}
			}
			else
			{
				if (strDepart == "请选择部门")	// 公司做为条件
				{
					m_ReM_strSQL.Format("Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
									 Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
									 Employee_InActiveSer_Table.InActiveSer_NewProperty = '%s' and \
									 Employee_InActiveSer_Table.InActiveSer_Company = '%s'", strType, strCompany);				
				}
				else	// 公司和部门一起做条件	
				{
					m_ReM_strSQL.Format("Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
									 Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
									 Employee_InActiveSer_Table.InActiveSer_NewProperty = '%s' and \
									 Employee_InActiveSer_Table.InActiveSer_Company = '%s' and \
									 Employee_InActiveSer_Table.InActiveSer_Department = '%s'", strType, strCompany, strDepart);
				}	
			}			
		}
	}
	else	// 没有公司和部门做为条件
	{
		if (strType == "所有")
		{
			m_ReM_strSQL.Format("(Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
						      Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
							  Employee_InActiveSer_Table.InActiveSer_NewProperty = '退休') or \
							 (Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
						      Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
							  Employee_InActiveSer_Table.InActiveSer_NewProperty = '病退')");
		}
		else
		{
			m_ReM_strSQL.Format("Employee_InActiveSer_Table.employee_IDCard = Employee_BasicInfor_Table.employee_IDCard and \
						     Employee_InActiveSer_Table.employee_IDCard = Employee_TrainExpe_Table.employee_IDCard and \
							 Employee_InActiveSer_Table.InActiveSer_NewProperty = '%s'", strType);
		}
	}

	return TRUE;
}

/*********************************************************************
函数说明:	  有公司、部门条件
函数参数:	   
*********************************************************************/
void FuncRemoveInfoDlg::QueryRemoveInfo()
{
	CString SQL;
	SQL.Format("select Employee_BasicInfor_Table.employee_ID as bID, \
					Employee_BasicInfor_Table.employee_Name as bName, \
					Employee_BasicInfor_Table.employee_IDCard as bIDCard, \
					Employee_BasicInfor_Table.employee_Sex as bSex, \
					Employee_BasicInfor_Table.employee_Age as bAge, \
					Employee_TrainExpe_Table.TrainExpe_Diploma1 as tDip1, \
                    Employee_InActiveSer_Table.InActiveSer_Company as iCom, \
					Employee_InActiveSer_Table.InActiveSer_Department as iDep, \
					Employee_InActiveSer_Table.InActiveSer_Duty as iDuty, \
					Employee_BasicInfor_Table.employee_JoinTime as bJT, \
					Employee_InActiveSer_Table.InActiveSer_EmployPro as EmlyPro, \
					Employee_BasicInfor_Table.employee_Address as bAdd, \
					Employee_BasicInfor_Table.employee_MobilePhone as bCellP, \
					Employee_BasicInfor_Table.employee_Remark  as bRemark \
					from Employee_InActiveSer_Table, Employee_BasicInfor_Table, Employee_TrainExpe_Table \
					where  %s order by Employee_InActiveSer_Table.InActiveSer_Company", m_ReM_strSQL);
	CADOOperation ADOdbo;
	CString strFields[] = {"bID", "bName", "bIDCard", "bSex", "bAge", "tDip1", "iCom", "iDep", "iDuty", "bJT", 
						   "EmlyPro", "bAdd", "bCellP", "bRemark"};
	ADOdbo.OpenRecordset(SQL);
	ADOdbo.ShowADOView(strFields, 14, this);
	ADOdbo.CloseRecorset();
}

/*********************************************************************
函数说明:	  
函数参数:	   
*********************************************************************/
void FuncRemoveInfoDlg::OnBtnRemovePath() 
{
	CFuncOper FunOper;
	CString strNewPath;
	strNewPath = FunOper.SettingSavePath(this, "请选择保存路径");
	if (strNewPath.IsEmpty())
	{
		strNewPath = m_strReMExcelPath;
	}
	m_strReMExcelPath = strNewPath;
	CString strPathMsg;
	strPathMsg.Format("(当前保存路径为:%s)", strNewPath);
	SetDlgItemText(IDC_STATIC_REMOVE_PATH, strPathMsg);

	CADOOperation ADOdbo;
	CString SQL;
	SQL.Format("update AccessInfo_Table set Infos_Path = '%s' where Index_Path = '退休工路径'", strNewPath);
	ADOdbo.OpenRecordset(SQL);
	ADOdbo.CloseRecorset();
}

/*********************************************************************
函数说明:	  初始化保存路径的显示
函数参数:	  
*********************************************************************/
void FuncRemoveInfoDlg::InitReMExcelPath()
{
	CADOOperation ADOdbo;
	CString SQL;
	SQL.Format("select Infos_Path from AccessInfo_Table where Index_Path = '退休工路径'");
	ADOdbo.OpenRecordset(SQL);

	CString strField[] = {"Infos_Path"};
	CString strRetPath[1];
	ADOdbo.GetFieldsValue(strField, 1, strRetPath, FALSE);
	ADOdbo.CloseRecorset();

	m_strReMExcelPath = strRetPath[0];
	CString strPathMsg;
	strPathMsg.Format("(当前保存路径为:%s)", strRetPath[0]);
	SetDlgItemText(IDC_STATIC_REMOVE_PATH, strPathMsg);
}

/*********************************************************************
函数说明:	  
函数参数:	   
*********************************************************************/
void FuncRemoveInfoDlg::OnBtnRemoveExcel() 
{
	GetDlgItem(IDC_COMBO_REMOVE_QUERYTYPE)->EnableWindow(FALSE);
	GetDlgItem(IDC_BUTTON_REMOVE_QUERY)->EnableWindow(FALSE);
	GetDlgItem(IDC_BTN_REMOVE_PATH)->EnableWindow(FALSE);
	GetDlgItem(IDC_BTN_REMOVE_EXCEL)->EnableWindow(FALSE);

	//变量定义
	_Application_Excel m_Application;    
	Workbooks_Excel    m_Workbooks;
	_Workbook_Excel    m_Workbook;
	Worksheets_Excel   m_Worksheets;
	_Worksheet_Excel   m_Worksheet;
	Range_Excel        m_range;

	LPDISPATCH  lpDisp;    
	COleVariant vResult;
	COleVariant covTrue((short)TRUE);
    COleVariant covFalse((short)FALSE);
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

	// 因为在 InitInstance 中已经初始化过 COM 的动态连接库
	// 	if(!AfxOleInit())
	// 	{
	//         AfxMessageBox("无法初始化COM的动态连接库!");
	//         return;
	// 	}

	//创建Excel 2000服务器(启动Excel)
	if(!m_Application.CreateDispatch("Excel.Application")) 
	{
		AfxMessageBox("无法启动Excel服务器!");
		return;
	}
	
	m_Application.SetVisible(FALSE);          // 使Excel不可见
	m_Application.SetUserControl(FALSE);      // 不允许其它用户控制Excel
	
	CFuncOper FunOper;
	CString strFile;
	strFile = FunOper.GetProgramPath() + "\\DocsWord\\退休工花名册(空).xls";
	// COleVariant varFilePath(strFile);

	// Workbooks 打开
	m_Workbooks.AttachDispatch(m_Application.GetWorkbooks(), TRUE);
	lpDisp = m_Workbooks.Open(strFile, covOptional, covOptional, covOptional, covOptional, 
								covOptional, covOptional, covOptional, covOptional, 
								covOptional, covOptional,covOptional, covOptional);
	
	// 得到 Workbook
	m_Workbook.AttachDispatch(lpDisp, TRUE);

	// 得到 Worksheets 
	m_Worksheets.AttachDispatch(m_Workbook.GetWorksheets(), TRUE);
	
	// 得到sheet1 
	m_Worksheet.AttachDispatch(m_Worksheets.GetItem(COleVariant("sheet1")), TRUE); 
	
	// 得到全部 Cells,此时, m_range 是 cells 的集合 
	m_range.AttachDispatch(m_Worksheet.GetCells(), TRUE);

	// 设置单元格的值
	for (int i = 2; i < (m_ListCtrl_Remove.GetItemCount() + 2); i++)
	{					
		m_range.SetItem(COleVariant((long)i),COleVariant((long)1), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 0)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)2), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 1)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)3), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 2)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)4), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 3)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)5), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 4)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)6), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 5)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)7), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 6)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)8), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 7)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)9), COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 8)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)10),COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 9)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)11),COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 10)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)12),COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 11)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)13),COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 12)));
		m_range.SetItem(COleVariant((long)i),COleVariant((long)14),COleVariant(m_ListCtrl_Remove.GetItemText(i - 2, 13)));
	}
	
	SYSTEMTIME SysTime;
	GetSystemTime(&SysTime);
	CString strSavePath;
	strSavePath.Format(m_strReMExcelPath + "\\退休工花名册(%d-%d-%d-%d-%d-%d)_(%s-%s-%s).xls", 
						SysTime.wYear, SysTime.wMonth, SysTime.wDay, SysTime.wHour, SysTime.wMinute, SysTime.wSecond,
						m_strReMType, m_strReMCom, m_strReMDepart);

	// 保存 
	m_Workbook.SaveAs(COleVariant(strSavePath), covOptional, covOptional, covOptional, 
						covOptional, covOptional, 0, covOptional, covOptional, covOptional, covOptional);
	
	// 关闭所有的book 退出 Excel 
	m_Workbook.Close(covOptional, COleVariant(strSavePath), covOptional);
	m_Workbooks.Close();      
	m_Application.Quit();

	MessageBox("退休工花名册查询报表生成成功!\t", "提示", MB_OK | MB_ICONEXCLAMATION);

	GetDlgItem(IDC_COMBO_REMOVE_QUERYTYPE)->EnableWindow(TRUE);
	GetDlgItem(IDC_BUTTON_REMOVE_QUERY)->EnableWindow(TRUE);
	GetDlgItem(IDC_BTN_REMOVE_PATH)->EnableWindow(TRUE);
	GetDlgItem(IDC_BTN_REMOVE_EXCEL)->EnableWindow(TRUE);
}

⌨️ 快捷键说明

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