// WMobilizeDlg.cpp : implementation file // #include "stdafx.h" #include "hrm.h" #include "WMobilizeDlg.h" #include "MMbilizeDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CWMobilizeDlg dialog CWMobilizeDlg::CWMobilizeDlg(CWnd* pParent /*=NULL*/) : CDialog(CWMobilizeDlg::IDD, pParent) { //{{AFX_DATA_INIT(CWMobilizeDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CWMobilizeDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CWMobilizeDlg) DDX_Control(pDX, IDC_DELETE, m_bdelete); DDX_Control(pDX, IDC_MODIFY, m_bModify); DDX_Control(pDX, IDC_STIME, m_sTime); DDX_Control(pDX, IDC_VDATE, m_vDate); DDX_Control(pDX, IDC_VWEEK, m_vWeek); DDX_Control(pDX, IDC_VTIME, m_vTime); DDX_Control(pDX, IDC_SDATE, m_sDate); DDX_Control(pDX, IDC_ADD, m_bAdd); DDX_Control(pDX, IDC_SELECT, m_bSelect); DDX_Control(pDX, IDC_COMBO, m_combType); DDX_Control(pDX, IDC_INFO, m_eInfo); DDX_Control(pDX, IDC_DATETIMEPICKER1, m_controlTime); DDX_Control(pDX, IDC_SINDEX, m_sIndex); DDX_Control(pDX, IDC_SMESG, m_smesg); DDX_Control(pDX, IDC_LIST1, m_list); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_infoTime); DDX_Text(pDX, IDC_INFO, m_info); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CWMobilizeDlg, CDialog) //{{AFX_MSG_MAP(CWMobilizeDlg) ON_CBN_SELCHANGE(IDC_COMBO, OnSelchangeCombo) ON_BN_CLICKED(IDC_ADD, OnAdd) ON_BN_CLICKED(IDC_MODIFY, OnModify) ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) ON_BN_CLICKED(IDC_SELECT, OnSelect) ON_BN_CLICKED(IDC_DELETE, OnDelete) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CWMobilizeDlg message handlers BOOL CWMobilizeDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_combType.InsertString(0,"调动编号"); m_combType.InsertString(1,"员工编号"); m_combType.InsertString(2,"原部门编号"); m_combType.InsertString(3,"原主管编号"); m_combType.InsertString(4,"原职位"); m_combType.InsertString(5,"现部门编号"); m_combType.InsertString(6,"现主管编号"); m_combType.InsertString(7,"现职位"); m_combType.InsertString(8,"调动日期"); m_combType.SetCurSel(1); InitControl(); m_eInfo.ShowWindow(SW_SHOW); m_controlTime.ShowWindow(SW_HIDE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CWMobilizeDlg::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 + 70; rect1.left = rect.right - 740; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 60; m_sIndex.MoveWindow(&rect1); rect1.top = rect.top + 65; rect1.left = rect.right - 680; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 120; m_combType.MoveWindow(&rect1); rect1.top = rect.top + 65; rect1.left = rect.right - 540; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 120; m_eInfo.MoveWindow(&rect1); m_controlTime.MoveWindow(&rect1); rect1.top = rect.top + 65; rect1.left = rect.right - 400; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 80; m_bSelect.MoveWindow(&rect1); m_infoTime = CTime::GetCurrentTime(); rect1.top = rect.top + 65; rect1.left = rect.right - 300; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 80; m_bAdd.MoveWindow(&rect1); m_infoTime = CTime::GetCurrentTime(); rect1.top = rect.top + 65; rect1.left = rect.right - 200; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 80; m_bModify.MoveWindow(&rect1); m_infoTime = CTime::GetCurrentTime(); rect1.top = rect.top + 65; rect1.left = rect.right - 100; rect1.bottom = rect1.top +20; rect1.right = rect1.left + 80; m_bdelete.MoveWindow(&rect1); m_infoTime = CTime::GetCurrentTime(); UpdateData(false); } void CWMobilizeDlg::InitListControl() { CRect rect,rect1; this->GetParent()->GetClientRect(&rect); rect1 = rect; rect1.top = rect.top + 100; rect1.bottom = rect.bottom -35; rect1.left += 5; rect1.right -= 10; 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,"调动编号",LVCFMT_LEFT,110,6); m_list.InsertColumn(1,"员工编号",LVCFMT_LEFT,110,5); m_list.InsertColumn(2,"原部门编号",LVCFMT_LEFT,110,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); } void CWMobilizeDlg::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 CWMobilizeDlg::numTostring(int num) { CString str; if(num <10) { str.Format("0%d",num); } else { str.Format("%d",num); } return str; } CString CWMobilizeDlg::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 CWMobilizeDlg::OnSelchangeCombo() { // TODO: Add your control notification handler code here int index = m_combType.GetCurSel(); if(index > 7) { m_controlTime.ShowWindow(SW_SHOW); m_eInfo.ShowWindow(SW_HIDE); } else { m_controlTime.ShowWindow(SW_HIDE); m_eInfo.ShowWindow(SW_SHOW); } } void CWMobilizeDlg::OnSelect() { m_list.DeleteAllItems(); int index = m_combType.GetCurSel(); UpdateData(true); CString sql; switch(index) { case 0: sql.Format("select * from hrmobilize where mID = '%s'",m_info); break; case 1: sql.Format("select * from hrmobilize where wID = '%s'",m_info); break; case 2: sql.Format("select * from hrmobilize where mOrigDID = '%s'",m_info); break; case 3: sql.Format("select * from hrmobilize where mOrigMID = '%s'",m_info); break; case 4: sql.Format("select * from hrmobilize where mOrigPosition = '%s'",m_info); break; case 5: sql.Format("select * from hrmobilize where mNowDID = '%s'",m_info); break; case 6: sql.Format("select * from hrmobilize where mNowMID = '%s'",m_info); break; case 7: sql.Format("select * form hrmobilize where mNowPosition = '%s'",m_info); break; case 8: sql.Format("select * from hrmobilize where mTime = '%s'",m_infoTime.Format("%Y-%m-%d")); break; } m_dataBase.OpenEx("DSN=HRM",0); m_mobilizeSet.m_pDatabase = &m_dataBase; m_mobilizeSet.Open(AFX_DB_USE_DEFAULT_TYPE,sql); if(!m_mobilizeSet.IsBOF()) m_mobilizeSet.MoveFirst(); index = 0; while(!m_mobilizeSet.IsEOF()) { m_list.InsertItem(index,""); m_list.SetItemText(index,0,m_mobilizeSet.m_mID); m_list.SetItemText(index,1,m_mobilizeSet.m_mID); m_list.SetItemText(index,2,m_mobilizeSet.m_mOrigDID); m_list.SetItemText(index,3,m_mobilizeSet.m_mOrigMID); m_list.SetItemText(index,4,m_mobilizeSet.m_mOrigPosition); m_list.SetItemText(index,5,m_mobilizeSet.m_mNowDID); m_list.SetItemText(index,6,m_mobilizeSet.m_mNowMID); m_list.SetItemText(index,7,m_mobilizeSet.m_mNowPosition); m_list.SetItemText(index,8,m_mobilizeSet.m_mTime.Format("%Y-%m-%d")); m_mobilizeSet.MoveNext(); } m_mobilizeSet.Close(); m_dataBase.Close(); } void CWMobilizeDlg::OnAdd() { CTime time = CTime::GetCurrentTime(); CMMbilizeDlg dlg; dlg.m_mid = GetBorrowID(); dlg.m_mtime = time; if(dlg.DoModal() == IDOK) { CString sql; sql.Format("insert into hrmobilize(mID,wID,mOrigDID,mOrigMID,mOrigPosition,\ mNowDID,mNowMID,mNowPosition,mTime) \ Values('%s','%s','%s','%s','%s','%s','%s','%s','%s')", dlg.m_mid,dlg.m_wid,dlg.m_odid,dlg.m_omid,dlg.m_oposition, dlg.m_ndid,dlg.m_nmid,dlg.m_nposition,dlg.m_mtime.Format("%Y-%m-%d")); m_dataBase.OpenEx("DSN=HRM",0); m_dataBase.ExecuteSQL(sql); m_dataBase.Close(); } OnSelect(); } CString CWMobilizeDlg::GetBorrowID() { CString temp,ID,sql; CTime time = CTime::GetCurrentTime(); sql.Format("select * from hrmobilize where mTime = '%s'",time.Format("%Y-%m-%d")); m_dataBase.OpenEx("DSN=HRm",0); m_mobilizeSet.m_pDatabase = &m_dataBase; m_mobilizeSet.Open(AFX_DB_USE_DEFAULT_TYPE,sql); if(!m_mobilizeSet.IsBOF()) m_mobilizeSet.MoveFirst(); temp = ID = "0"; if(!m_mobilizeSet.IsEOF()) { while(!m_mobilizeSet.IsEOF()) { temp = m_mobilizeSet.m_mID; if(temp.Compare(ID) > 0) { ID = temp; } m_mobilizeSet.MoveNext(); } ID.TrimLeft(); ID.TrimRight(); ID.Format("%s%04d",time.Format("%y%m%d"),atoi(ID.Right(4)) +1); } else { ID.Format("%s0001",time.Format("%y%m%d")); } m_mobilizeSet.Close(); m_dataBase.Close(); return ID; } void CWMobilizeDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here m_listIndex = m_list.GetSelectionMark(); *pResult = 0; } void CWMobilizeDlg::OnModify() { if(m_listIndex < 0) return; CMMbilizeDlg dlg; dlg.m_mid = m_list.GetItemText(m_listIndex,0); dlg.m_wid = m_list.GetItemText(m_listIndex,1); dlg.m_odid = m_list.GetItemText(m_listIndex,2); dlg.m_omid = m_list.GetItemText(m_listIndex,3); dlg.m_oposition = m_list.GetItemText(m_listIndex,4); dlg.m_ndid = m_list.GetItemText(m_listIndex,5); dlg.m_nmid = m_list.GetItemText(m_listIndex,6); dlg.m_nposition = m_list.GetItemText(m_listIndex,7); dlg.m_mtime = aTod(m_list.GetItemText(m_listIndex,8)); if(dlg.DoModal() == IDOK) { CString sql; sql.Format("Update hrmobilize set mID = '%s',mOrigDID = '%s',mOrigMID = '%s', \ mOrigPosition = '%s',mNowDID = '%s', mNowMID = '%s', mNowPosition = '%s', \ mTime = '%s' where mID = '%s'",dlg.m_wid, dlg.m_odid, dlg.m_omid, dlg.m_oposition, dlg.m_ndid, dlg.m_nmid, dlg.m_nposition, dlg.m_mtime.Format("%Y-%m-%d"),dlg.m_mid); m_dataBase.OpenEx("DSN=HRM",0); m_dataBase.ExecuteSQL(sql); m_dataBase.Close(); } OnSelect(); } CTime CWMobilizeDlg::aTod(CString str) { int y,m,d; sscanf(str,"%d-%d-%d",&y,&m,&d); CTime time(y,m,d,0,0,0); return time; } void CWMobilizeDlg::OnDelete() { if(m_listIndex < 0) return; CString sql; sql.Format("delete from hrmobilize where mid = '%s'",m_list.GetItemText(m_listIndex,0)); m_dataBase.OpenEx("DSN=HRM",0); m_dataBase.ExecuteSQL(sql); m_dataBase.Close(); OnSelect(); }