// WorkInfoDlg.cpp : implementation file // #include "stdafx.h" #include "hrm.h" #include "WorkInfoDlg.h" #include "modifyworkerdlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CWorkInfoDlg dialog CWorkInfoDlg::CWorkInfoDlg(CWnd* pParent /*=NULL*/) : CDialog(CWorkInfoDlg::IDD, pParent) { //{{AFX_DATA_INIT(CWorkInfoDlg) m_check = FALSE; m_estatus = _T(""); m_radio = 0; m_infoTime = 0; m_info = _T(""); //}}AFX_DATA_INIT for(int i = 0; i < 18; i++) { m_selectIndex[i].bUse = false; } } void CWorkInfoDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CWorkInfoDlg) DDX_Control(pDX, IDC_DATETIMEPICKER1, m_controlTime); DDX_Control(pDX, IDC_R1, m_r1); DDX_Control(pDX, IDC_R2, m_r2); DDX_Control(pDX, IDC_XL, m_XL); DDX_Control(pDX, IDC_CHECK, m_cCheck); DDX_Control(pDX, IDC_STATUS1, m_status1); DDX_Control(pDX, IDC_STATUS, m_status); DDX_Control(pDX, IDC_VWEEK, m_vWeek); DDX_Control(pDX, IDC_VTIME, m_vTime); DDX_Control(pDX, IDC_VDATE, m_vDate); DDX_Control(pDX, IDC_STIME, m_sTime); DDX_Control(pDX, IDC_SDATE, m_sDate); DDX_Control(pDX, IDC_SMESG, m_SMesg); DDX_Control(pDX, IDC_SINDEX, m_sIndex); DDX_Control(pDX, IDC_SELECT, m_bSelect); DDX_Control(pDX, IDC_INFO, m_eInfo); DDX_Control(pDX, IDC_CTYPE, m_combType); DDX_Control(pDX, IDC_LIST2, m_list2); DDX_Control(pDX, IDC_LIST1, m_list); DDX_Check(pDX, IDC_CHECK, m_check); DDX_Text(pDX, IDC_STATUS, m_estatus); DDX_Radio(pDX, IDC_R1, m_radio); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_infoTime); DDX_Text(pDX, IDC_INFO, m_info); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CWorkInfoDlg, CDialog) //{{AFX_MSG_MAP(CWorkInfoDlg) ON_CBN_SELCHANGE(IDC_CTYPE, OnSelchangeCtype) ON_BN_CLICKED(IDC_SELECT, OnSelect) ON_NOTIFY(NM_DBLCLK, IDC_LIST2, OnDblclkList2) ON_NOTIFY(NM_DBLCLK, IDC_LIST1, OnDblclkList1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CWorkInfoDlg message handlers BOOL CWorkInfoDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_dataBase.OpenEx("DSN=HRM",0); m_XL.DeleteTempMap(); m_XL.InsertString(0,"高中以下学历"); m_XL.InsertString(1,"高中"); m_XL.InsertString(2,"专科"); m_XL.InsertString(3,"本科"); m_XL.InsertString(4,"本科 + 学士学位"); m_XL.InsertString(5,"研究生"); m_XL.InsertString(6,"博士"); m_XL.SetCurSel(2); m_combType.InsertString(0,"员工编号"); m_combType.InsertString(1,"员工姓名"); m_combType.InsertString(2,"员工性别"); m_combType.InsertString(3,"员工职位"); m_combType.InsertString(4,"1级部门"); m_combType.InsertString(5,"2级部门"); m_combType.InsertString(6,"电子邮件"); m_combType.InsertString(7,"身份证号"); m_combType.InsertString(8,"出生日期"); m_combType.InsertString(9,"民族"); m_combType.InsertString(10,"户籍所在地"); m_combType.InsertString(11,"婚姻情况"); m_combType.InsertString(12,"毕业院校"); m_combType.InsertString(13,"专业"); m_combType.InsertString(14,"学历"); m_combType.InsertString(15,"毕业时间"); m_combType.InsertString(16,"入职时间"); m_combType.InsertString(17,"联系电话"); m_combType.SetCurSel(0); InitControl(); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CWorkInfoDlg::InitListControl() { CRect rect,rect1,rect2; this->GetParent()->GetClientRect(&rect); rect1 = rect2 = rect; rect1.top = rect.top + 100; rect1.bottom = rect.bottom -60; rect1.left += 240; m_list.MoveWindow(&rect1); m_list.SetExtendedStyle(LVS_EX_FLATSB |LVS_EX_FULLROWSELECT |LVS_EX_HEADERDRAGDROP |LVS_EX_ONECLICKACTIVATE |LVS_EX_GRIDLINES); m_list.InsertColumn(0,"1级部门",LVCFMT_LEFT,107,6); m_list.InsertColumn(1,"2级部门",LVCFMT_LEFT,110,5); m_list.InsertColumn(2,"性别",LVCFMT_LEFT,40,5); m_list.InsertColumn(3,"职位",LVCFMT_LEFT,110,5); m_list.InsertColumn(4,"电子邮件",LVCFMT_LEFT,150,5); m_list.InsertColumn(5,"身份证号",LVCFMT_LEFT,134,5); m_list.InsertColumn(6,"出生日期",LVCFMT_LEFT,110,5); m_list.InsertColumn(7,"民族",LVCFMT_LEFT,110,5); m_list.InsertColumn(8,"户籍所在地",LVCFMT_LEFT,110,5); m_list.InsertColumn(9,"婚姻情况",LVCFMT_LEFT,80,5); m_list.InsertColumn(10,"毕业院校",LVCFMT_LEFT,110,5); m_list.InsertColumn(11,"专业",LVCFMT_LEFT,110,5); m_list.InsertColumn(12,"学历",LVCFMT_LEFT,110,5); m_list.InsertColumn(13,"毕业时间",LVCFMT_LEFT,110,5); m_list.InsertColumn(14,"入职时间",LVCFMT_LEFT,110,5); m_list.InsertColumn(15,"联系电话",LVCFMT_LEFT,110,5); m_list.InsertColumn(16,"紧急联系人",LVCFMT_LEFT,110,5); m_list.InsertColumn(17,"紧急联系电话",LVCFMT_LEFT,110,5); m_list.InsertColumn(18,"家庭住址",LVCFMT_LEFT,260,5); rect2.right = 241; rect2.top = rect.top + 100; rect2.bottom = rect.bottom -60; m_list2.MoveWindow(&rect2); m_list2.SetExtendedStyle(LVS_EX_FLATSB |LVS_EX_FULLROWSELECT |LVS_EX_HEADERDRAGDROP |LVS_EX_ONECLICKACTIVATE |LVS_EX_GRIDLINES); m_list2.InsertColumn(0,"员工编号",LVCFMT_LEFT,120,1); m_list2.InsertColumn(1,"员工姓名",LVCFMT_LEFT,120,4); } void CWorkInfoDlg::InitControl() { InitListControl(); InitDateTime(); CRect rect,rect1; this->GetParent()->GetClientRect(&rect); rect1 = rect; rect1.top = rect.top + 10; m_SMesg.MoveWindow(&rect1); rect1.top = rect.top + 67; rect1.left = rect.right - 540; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 80; m_cCheck.MoveWindow(&rect1); rect1.top = rect.top + 70; rect1.left = rect.right - 440; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 60; m_sIndex.MoveWindow(&rect1); rect1.top = rect.top + 65; rect1.left = rect.right - 380; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 120; m_combType.MoveWindow(&rect1); InitInfoControl(); rect1.top = rect.top + 65; rect1.left = rect.right - 100; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 80; m_bSelect.MoveWindow(&rect1); rect1.top = rect.bottom - 55; rect1.left = rect.left + 1; rect1.bottom = rect.bottom -30 ; rect1.right = rect.left + 100; m_status1.MoveWindow(&rect1); rect1.top = rect.bottom - 55; rect1.left = rect.left + 100; rect1.bottom = rect.bottom -30 ; rect1.right = rect.right - 5; m_status.MoveWindow(&rect1); } void CWorkInfoDlg::InitDateTime() { CRect rect,rect1; this->GetParent()->GetClientRect(&rect); rect1 = rect; rect1.top = rect.top + 40; rect1.left = rect.left + 20 ; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 60; m_sDate.MoveWindow(&rect1); rect1.top = rect.top + 40; rect1.left = rect.left + 80 ; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 100; m_vDate.MoveWindow(&rect1); rect1.top = rect.top + 40; rect1.left = rect.left + 180 ; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 60; m_vWeek.MoveWindow(&rect1); rect1.top = rect.top + 40; rect1.left = rect.left + 240; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 60; m_sTime.MoveWindow(&rect1); rect1.top = rect.top + 40; rect1.left = rect.left + 300 ; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 60; m_vTime.MoveWindow(&rect1); SYSTEMTIME time; GetLocalTime(&time); int num[7]; num[0] = time.wYear; num[1] = time.wMonth; num[2] = time.wDay; num[3] = time.wHour; num[4] = time.wMinute; num[5] = time.wSecond; num[6] = time.wDayOfWeek; CString string[7]; for(int i = 0; i < 6; i++) { string[i] = numTostring(num[i]); } string[6] = numToH(num[6]); CString sdate,stime; sdate.Format("%s年%s月%s日",string[0],string[1],string[2]); GetDlgItem(IDC_VDATE)->SetWindowText(sdate); stime.Format("%s:%s:%s",string[3],string[4],string[5]); GetDlgItem(IDC_VTIME)->SetWindowText(stime); GetDlgItem(IDC_VWEEK)->SetWindowText(string[6]); } CString CWorkInfoDlg::numTostring(int num) { CString str; if(num <10) { str.Format("0%d",num); } else { str.Format("%d",num); } return str; } CString CWorkInfoDlg::numToH(int num) { switch(num) { case 1: return "星期一"; break; case 2: return "星期二"; break; case 3: return "星期三"; break; case 4: return "星期四"; break; case 5: return "星期五"; break; case 6: return "星期六"; break; case 0: return "星期日"; break; } return "星期日"; } void CWorkInfoDlg::OnSelchangeCtype() { // TODO: Add your control notification handler code here UpdateData(true); int type = m_combType.GetCurSel(); InitInfoControl(); } void CWorkInfoDlg::InitInfoControl() { CRect rect,rect1; this->GetParent()->GetClientRect(&rect); rect1 = rect; rect1.top = rect.top + 65; rect1.left = rect.right - 240; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 120; m_eInfo.MoveWindow(&rect1); m_XL.MoveWindow(&rect1); m_infoTime = CTime::GetCurrentTime(); UpdateData(false); m_controlTime.MoveWindow(&rect1); rect1.right = rect1.left + 60; m_r1.MoveWindow(&rect1); rect1.left = rect.right - 180; rect1.right = rect1.left + 60; m_r2.MoveWindow(&rect1); int type = m_combType.GetCurSel(); switch( type) { case 2: m_eInfo.ShowWindow(SW_HIDE); m_XL.ShowWindow(SW_HIDE); m_controlTime.ShowWindow(SW_HIDE); m_r1.ShowWindow(SW_SHOW); m_r2.ShowWindow(SW_SHOW); GetDlgItem(IDC_R1)->SetWindowText("男"); GetDlgItem(IDC_R2)->SetWindowText("女"); break; case 11: m_eInfo.ShowWindow(SW_HIDE); m_XL.ShowWindow(SW_HIDE); m_controlTime.ShowWindow(SW_HIDE); m_r1.ShowWindow(SW_SHOW); m_r2.ShowWindow(SW_SHOW); GetDlgItem(IDC_R1)->SetWindowText("已婚"); GetDlgItem(IDC_R2)->SetWindowText("未婚"); break; case 14: m_eInfo.ShowWindow(SW_HIDE); m_XL.ShowWindow(SW_SHOW); m_controlTime.ShowWindow(SW_HIDE); m_r1.ShowWindow(SW_HIDE); m_r2.ShowWindow(SW_HIDE); break; case 8: case 15: case 16: m_eInfo.ShowWindow(SW_HIDE); m_XL.ShowWindow(SW_HIDE); m_controlTime.ShowWindow(SW_SHOW); m_r1.ShowWindow(SW_HIDE); m_r2.ShowWindow(SW_HIDE); break; default: m_eInfo.ShowWindow(SW_SHOW); m_XL.ShowWindow(SW_HIDE); m_controlTime.ShowWindow(SW_HIDE); m_r1.ShowWindow(SW_HIDE); m_r2.ShowWindow(SW_HIDE); break; } } CString CWorkInfoDlg::GetSql() { int type = m_combType.GetCurSel(); CString str,sql,status; UpdateData(true); switch(type) { case 0: str.Format("wCID = '%s'",m_info); status.Format("编号:%s,",m_info); break; case 1: str.Format("wName = '%s'",m_info); status.Format("姓名:%s,",m_info); break; case 2: if(!m_radio) { str = "wSex = '男'"; status.Format("性别:%s,","男"); } else { str = "wSex = '女'"; status.Format("性别:%s,","女"); } break; case 3: str.Format("wPosition = '%s'",m_info); status.Format("职位:%s,",m_info); break; case 4: str.Format("w1Department = '%s'",m_info); status.Format("1级部门:%s,",m_info); break; case 5: str.Format("w2Department = '%s'",m_info); status.Format("2级部门:%s,",m_info); break; case 6: str.Format("wMail = '%s'",m_info); status.Format("电子邮件:%s,",m_info); break; case 7: str.Format("wID = '%s'",m_info); status.Format("身份证号:%s,",m_info); break; case 8: str.Format("wBorn = '%s'",m_infoTime.Format("%Y-%m-%d")); status.Format("出生日期:%s,",m_infoTime.Format("%Y-%m-%d")); break; case 9: str.Format("wNational = '%s'",m_info); status.Format("民族:%s,",m_info); break; case 10: str.Format("wHouseholdAdd = '%s'",m_info); status.Format("户籍所在地:%s,",m_info); break; case 11: if(!m_radio) { str = "wBMarriaged = '已婚'"; status.Format("婚姻情况:%s,","已婚"); } else { str = "wBMarriaged = '未婚'"; status.Format("婚姻情况:%s,","未婚"); } break; case 12: str.Format("wGraduate = '%s'",m_info); status.Format("毕业院校:%s,",m_info); break; case 13: str.Format("wMajor = '%s'",m_info); status.Format("专业:%s,",m_info); break; case 14: switch(m_XL.GetCurSel()) { case 0: str="wDeGree = '高中以下'"; status="学历:高中以下,"; break; case 1: str="wDeGree = '高中'"; status="学历:高中,"; break; case 2: str="wDeGree = '专科'"; status="学历:专科,"; break; case 3: str="wDeGree = '本科'"; status="学历:本科,"; break; case 4: str="wDeGree = '本科+学士学位'"; status="学历:本科+学士学位,"; break; case 5: str="wDeGree = '研究生'"; status="学历:研究生,"; break; case 6: str="wDeGree = '博士'"; status="学历:博士,"; break; } break; case 15: str.Format("wGraduateTime = '%s'",m_infoTime.Format("%Y-%m-%d")); status.Format("毕业日期:%s,",m_infoTime.Format("%Y-%m-%d")); break; case 16: str.Format("wEntrantTime = '%s'",m_infoTime.Format("%Y-%m-%d")); status.Format("入职日期:%s,",m_infoTime.Format("%Y-%m-%d")); break; case 17: str.Format("wPhone = '%s'",m_info); status.Format("联系电话:%s,",m_info); break; } if(m_check) { m_selectIndex[type].str = str; if(m_selectIndex[type].bUse) { MessageBox("重复的查询条件,请参照状态栏信息!"); return ""; } m_selectIndex[type].bUse = true; bool first = true; for(int i = 0; i <18; i++) { if(m_selectIndex[i].bUse) { if(first) { str = m_selectIndex[i].str; first = false; } else str += " and " + m_selectIndex[i].str; } } m_estatus += status; } else { for(int i = 0; i <18; i++) { m_selectIndex[i].bUse = false; } m_estatus = status; } sql.Format("select * from hrworker where %s",str); UpdateData(false); return sql; } void CWorkInfoDlg::OnSelect() { // TODO: Add your control notification handler code here m_list.DeleteAllItems(); m_list2.DeleteAllItems(); CString sql = GetSql(); if(sql == "") return; m_workerSet.m_pDatabase = &m_dataBase; m_workerSet.Open(AFX_DB_USE_DEFAULT_TYPE,sql); if(!m_workerSet.IsBOF()) m_workerSet.MoveFirst(); int i = 0; while(!m_workerSet.IsEOF()) { m_list2.InsertItem(i,""); m_list2.SetItemText(i,0,m_workerSet.m_wCID); m_list2.SetItemText(i,1,m_workerSet.m_wName); m_list.InsertItem(i,""); m_list.SetItemText(i,0,m_workerSet.m_w1Department); m_list.SetItemText(i,1,m_workerSet.m_w2Department); m_list.SetItemText(i,2,m_workerSet.m_wSex); m_list.SetItemText(i,3,m_workerSet.m_wPosition); m_list.SetItemText(i,4,m_workerSet.m_wMail); m_list.SetItemText(i,5,m_workerSet.m_wID); m_list.SetItemText(i,6,m_workerSet.m_wBorn.Left(10)); m_list.SetItemText(i,7,m_workerSet.m_wNational); m_list.SetItemText(i,8,m_workerSet.m_wHouseholdAdd); m_list.SetItemText(i,9,m_workerSet.m_wBMarriaged); m_list.SetItemText(i,10,m_workerSet.m_wGraduate); m_list.SetItemText(i,11,m_workerSet.m_wMajor); m_list.SetItemText(i,12,m_workerSet.m_wDegree); m_list.SetItemText(i,13,m_workerSet.m_wGraduateTime.Format("%Y-%m-%d")); m_list.SetItemText(i,14,m_workerSet.m_wEntrantTime.Format("%Y-%m-%d")); m_list.SetItemText(i,15,m_workerSet.m_wPhone); m_list.SetItemText(i,16,m_workerSet.m_wEmergencyMan); m_list.SetItemText(i,17,m_workerSet.m_wEmergencyCall); m_list.SetItemText(i,18,m_workerSet.m_wAddress); i ++; m_workerSet.MoveNext(); } m_workerSet.Close(); } void CWorkInfoDlg::OnDblclkList2(NMHDR* pNMHDR, LRESULT* pResult) { int listIndex = m_list2.GetSelectionMark(); CModifyWorkerDlg dlg; dlg.m_cid = m_list2.GetItemText(listIndex,0); for(int i = 0; i < 2; i++) { dlg.m_updateMesg[i].str = m_list2.GetItemText(listIndex,i); } for(i = 2; i < 21; i++) { dlg.m_updateMesg[i].str = m_list.GetItemText(listIndex,i - 2); } if(dlg.DoModal()== IDOK) { CString temp1 = "",temp2 = ""; CString index[21] ={"wCID","wName","w1Department","w2Department","wSex","wPosition",\ "wMail","wID", "wBorn", "wNational", "wHouseholdAdd", "wBMarriaged", "wGraduate",\ "wMajor", "wDegree", "wGraduateTime", "wEntrantTime","wPhone", "wEmergencyMan", \ "wEmergencyCall", "wAddress"}; for(int i = 1; i < 20; i++) { temp1.Format("%s = '%s',",index[i],dlg.m_updateMesg[i]); temp2 += temp1; } temp1.Format("%s = '%s' ",index[20],dlg.m_updateMesg[20]); temp2 += temp1; CString sql; sql.Format("UPDATE hrworker SET %s WHERE wCID='%s'",temp2,dlg.m_updateMesg[0]); m_dataBase.ExecuteSQL(sql); OnSelect(); } *pResult = 0; } void CWorkInfoDlg::OnDblclkList1(NMHDR* pNMHDR, LRESULT* pResult) { int listIndex = m_list.GetSelectionMark(); CModifyWorkerDlg dlg; dlg.m_cid = m_list2.GetItemText(listIndex,0); for(int i = 0; i < 2; i++) { dlg.m_updateMesg[i].str = m_list2.GetItemText(listIndex,i); } for(i = 2; i < 21; i++) { dlg.m_updateMesg[i].str = m_list.GetItemText(listIndex,i - 2); } if(dlg.DoModal()== IDOK) { CString temp1 = "",temp2 = ""; CString index[21] ={"wCID","wName","w1Department","w2Department","wSex","wPosition",\ "wMail","wID", "wBorn", "wNational", "wHouseholdAdd", "wBMarriaged", "wGraduate",\ "wMajor", "wDegree", "wGraduateTime", "wEntrantTime","wPhone", "wEmergencyMan", \ "wEmergencyCall", "wAddress"}; for(int i = 1; i < 20; i++) { temp1.Format("%s = '%s',",index[i],dlg.m_updateMesg[i]); temp2 += temp1; } temp1.Format("%s = '%s' ",index[20],dlg.m_updateMesg[20]); temp2 += temp1; CString sql; sql.Format("UPDATE hrworker SET %s WHERE wCID='%s'",temp2,dlg.m_updateMesg[0]); m_dataBase.ExecuteSQL(sql); OnSelect(); } *pResult = 0; }