// ContractDlg.cpp : implementation file // #include "stdafx.h" #include "hrm.h" #include "ContractDlg.h" #include "modifycontractdlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CContractDlg dialog CContractDlg::CContractDlg(CWnd* pParent /*=NULL*/) : CDialog(CContractDlg::IDD, pParent) { //{{AFX_DATA_INIT(CContractDlg) m_info = _T(""); //}}AFX_DATA_INIT m_listIndex = 0; m_time = CTime::GetCurrentTime(); } void CContractDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CContractDlg) DDX_Control(pDX, IDC_DATETIMEPICKER1, m_ctime); DDX_Control(pDX, IDC_INFO, m_cinfo); DDX_Control(pDX, IDC_INFOTYPE, m_infoType); DDX_Control(pDX, IDC_LIST1, m_list); DDX_Text(pDX, IDC_INFO, m_info); DDX_DateTimeCtrl(pDX, IDC_DATETIMEPICKER1, m_time); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CContractDlg, CDialog) //{{AFX_MSG_MAP(CContractDlg) ON_BN_CLICKED(IDC_RETURN, OnReturn) ON_WM_CLOSE() ON_BN_CLICKED(IDC_SELECT, OnSelect) ON_BN_CLICKED(IDC_ADD, OnAdd) ON_BN_CLICKED(IDC_MODIFY, OnModify) ON_BN_CLICKED(IDC_DELETE, OnDelete) ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) ON_CBN_SELCHANGE(IDC_INFOTYPE, OnSelchangeInfotype) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CContractDlg message handlers void CContractDlg::OnReturn() { // TODO: Add your control notification handler code here OnOK(); this->GetParent()->ShowWindow(SW_SHOW); } void CContractDlg::OnClose() { // TODO: Add your message handler code here and/or call default this->GetParent()->PostMessage(WM_QUIT); CDialog::OnClose(); } BOOL CContractDlg::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here m_list.SetExtendedStyle(LVS_EX_FLATSB| // 扁平风格滚动条 LVS_EX_FULLROWSELECT| // 允许正行选中 LVS_EX_HEADERDRAGDROP| // 允许标题拖拽 LVS_EX_ONECLICKACTIVATE| // 高亮显示 LVS_EX_GRIDLINES // 画出网格线 ); m_list.InsertColumn(0,"合同编号",LVCFMT_LEFT,100,100); m_list.InsertColumn(1,"员工编号",LVCFMT_LEFT,100,100); m_list.InsertColumn(2,"员工姓名",LVCFMT_LEFT,100,100); m_list.InsertColumn(3,"转正时间",LVCFMT_LEFT,100,100); m_list.InsertColumn(4,"合同起始时间",LVCFMT_LEFT,100,100); m_list.InsertColumn(5,"合同终止时间",LVCFMT_LEFT,100,100); m_list.InsertColumn(6,"续签时间",LVCFMT_LEFT,100,100); m_list.InsertColumn(7,"续签终止时间",LVCFMT_LEFT,100,100); m_infoType.InsertString(0,"合同编号"); m_infoType.InsertString(1,"员工编号"); m_infoType.InsertString(2,"员工姓名"); m_infoType.InsertString(3,"转正时间"); m_infoType.InsertString(4,"合同起始时间"); m_infoType.InsertString(5,"合同终止时间"); m_infoType.InsertString(6,"续签时间"); m_infoType.InsertString(7,"续签终止时间"); m_infoType.SetCurSel(0); m_ctime.ShowWindow(SW_HIDE); m_cinfo.ShowWindow(SW_SHOW); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CContractDlg::OnSelect() { m_list.DeleteAllItems(); int index = m_infoType.GetCurSel(); CString str,sql; UpdateData(true); m_info.TrimLeft(); m_info.TrimRight(); switch(index) { case 0: str.Format("cID = '%s'",m_info); break; case 1: str.Format("wID = '%s'",m_info); break; case 2: str.Format("wName = '%s'",m_info); break; case 3: str.Format("wRegWTime = '%s'",m_time.Format("%Y-%m-%d")); break; case 4: str.Format("cStartTime = '%s'",m_time.Format("%Y-%m-%d")); break; case 5: str.Format("wCStopTime = '%s'",m_time.Format("%Y-%m-%d")); break; case 6: str.Format("cReStartTime = '%s'",m_time.Format("%Y-%m-%d")); break; case 7: str.Format("cReStopTime = '%s'",m_time.Format("%Y-%m-%d")); break; } sql.Format("select * from hrcontract where %s",str); m_dataBase.OpenEx("DSN=HRM",0); m_contractSet.m_pDatabase = &m_dataBase; m_contractSet.Open(AFX_DB_USE_DEFAULT_TYPE,sql); if(!m_contractSet.IsBOF()) m_contractSet.MoveFirst(); int i = 0; while(!m_contractSet.IsEOF()) { m_list.InsertItem(i,""); m_list.SetItemText(i,0,m_contractSet.m_cID); m_list.SetItemText(i,1,m_contractSet.m_wID); m_list.SetItemText(i,2,m_contractSet.m_wName); m_list.SetItemText(i,3,m_contractSet.m_wRegWTime.Format("%Y-%m-%d")); m_list.SetItemText(i,4,m_contractSet.m_cStartTime.Format("%Y-%m-%d")); m_list.SetItemText(i,5,m_contractSet.m_wCStopTime.Format("%Y-%m-%d")); m_list.SetItemText(i,6,m_contractSet.m_cReStartTime.Format("%Y-%m-%d")); m_list.SetItemText(i,7,m_contractSet.m_cReStopTime.Format("%Y-%m-%d")); i++; m_contractSet.MoveNext(); } m_contractSet.Close(); m_dataBase.Close(); } void CContractDlg::OnAdd() { // TODO: Add your control notification handler code here CTime time = CTime::GetCurrentTime(); CModifyContractDlg dlg; dlg.m_id = GetContractID(); dlg.m_regtime = time; dlg.m_starttime = time; dlg.m_stoptime = time; dlg.m_rstarttime = time; dlg.m_rstoptime = time; if(dlg.DoModal()==IDOK) { m_dataBase.OpenEx("DSN=HRM",0); CString sql; sql.Format("insert into hrcontract(cID,wID,wName,wRegWTime,cStartTime,wCStopTime,cReStartTime,cReStopTime)\ Values('%s','%s','%s','%s','%s','%s','%s','%s')",dlg.m_id,dlg.m_wid,dlg.m_wname,dlg.m_regtime.Format("%Y-%m-%d"), dlg.m_starttime.Format("%Y-%m-%d"),dlg.m_stoptime.Format("%Y-%m-%d"),dlg.m_rstarttime.Format("%Y-%m-%d"), dlg.m_rstoptime.Format("%Y-%m-%d")); m_dataBase.ExecuteSQL(sql); m_dataBase.Close(); } OnSelect(); } void CContractDlg::OnModify() { // TODO: Add your control notification handler code here CModifyContractDlg dlg; dlg.m_id = m_list.GetItemText(m_listIndex,0); dlg.m_wid = m_list.GetItemText(m_listIndex,1); dlg.m_wname = m_list.GetItemText(m_listIndex,2); dlg.m_regtime = aToTime(m_list.GetItemText(m_listIndex,3)); dlg.m_starttime = aToTime(m_list.GetItemText(m_listIndex,4)); dlg.m_stoptime = aToTime(m_list.GetItemText(m_listIndex,5)); dlg.m_rstarttime = aToTime(m_list.GetItemText(m_listIndex,6)); dlg.m_rstoptime = aToTime(m_list.GetItemText(m_listIndex,7)); if(dlg.DoModal()==IDOK) { m_dataBase.OpenEx("DSN=HRM",0); CString sql; sql.Format("update hrcontract set wID = '%s',wName= '%s',wRegWTime = '%s', cStartTime= '%s',wCStopTime= '%s',\ cReStartTime= '%s',cReStopTime= '%s' where cID= '%s'",dlg.m_wid,dlg.m_wname,dlg.m_regtime.Format("%Y-%m-%d"), dlg.m_starttime.Format("%Y-%m-%d"),dlg.m_stoptime.Format("%Y-%m-%d"),dlg.m_rstarttime.Format("%Y-%m-%d"), dlg.m_rstoptime.Format("%Y-%m-%d"),dlg.m_id); m_dataBase.ExecuteSQL(sql); m_dataBase.Close(); } OnSelect(); } void CContractDlg::OnDelete() { // TODO: Add your control notification handler code here CoInitialize(NULL); CString sql; sql.Format("delete from hrcontract where cID ='%s'",m_list.GetItemText(m_listIndex,0)); m_dataBase.OpenEx("DSN=HRM",0); m_dataBase.ExecuteSQL(sql); m_dataBase.Close(); OnSelect(); } CTime CContractDlg::aToTime(CString str) { int h,m,d; sscanf(str,"%d-%d-%d",&h,&m,&d); return CTime::CTime(h,m,d,0,0,0); } void CContractDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here m_listIndex = m_list.GetSelectionMark(); *pResult = 0; } CString CContractDlg::GetContractID() { CTime time = CTime::GetCurrentTime(); CString sql,temp,ID; sql.Format("select * from hrcontract where cStartTime = '%s'",time.Format("%Y-%m-%d")); m_dataBase.OpenEx("DSN=HRM",0); m_contractSet.m_pDatabase = &m_dataBase; m_contractSet.Open(AFX_DB_USE_DEFAULT_TYPE,sql); if(!m_contractSet.IsBOF()) m_contractSet.MoveFirst(); if(!m_contractSet.IsEOF()) { ID = temp = "0"; while(!m_contractSet.IsEOF()) { temp = m_contractSet.m_cID; m_contractSet.MoveNext(); if(temp.Compare(ID) > 0) { ID = temp; } } ID.Format("%s%04d",time.Format("%y%m%d"),atoi(ID.Right(4))+1); } else { ID.Format("%s0001",time.Format("%y%m%d")); } m_contractSet.Close(); m_dataBase.Close(); return ID; } void CContractDlg::OnSelchangeInfotype() { // TODO: Add your control notification handler code here int index = m_infoType.GetCurSel(); if(index > 2) { m_ctime.ShowWindow(SW_SHOW); m_cinfo.ShowWindow(SW_HIDE); } else { m_ctime.ShowWindow(SW_HIDE); m_cinfo.ShowWindow(SW_SHOW); } }