📄 funcremoveinfodlg.cpp
字号:
}
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 + -