// DepartmentDlg.cpp : implementation file // #include "stdafx.h" #include "hrm.h" #include "DepartmentDlg.h" #include "hrmdlg.h" #include "ModifyDemparmentDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CDepartmentDlg dialog CDepartmentDlg::CDepartmentDlg(CWnd* pParent /*=NULL*/) : CDialog(CDepartmentDlg::IDD, pParent) { //{{AFX_DATA_INIT(CDepartmentDlg) m_info = _T(""); m_time = 0; //}}AFX_DATA_INIT m_listIndex = -1; } void CDepartmentDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CDepartmentDlg) DDX_Control(pDX, IDC_INFO, m_cInfo); DDX_Control(pDX, IDC_DATETIMEPICKER1, m_cTime); 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(CDepartmentDlg, CDialog) //{{AFX_MSG_MAP(CDepartmentDlg) ON_BN_CLICKED(IDC_RETURN, OnReturn) 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_CBN_SELCHANGE(IDC_INFOTYPE, OnSelchangeInfotype) ON_WM_CLOSE() ON_NOTIFY(NM_CLICK, IDC_LIST1, OnClickList1) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CDepartmentDlg message handlers void CDepartmentDlg::OnReturn() { // TODO: Add your control notification handler code here this->GetParent()->ShowWindow(SW_SHOW); OnOK(); } BOOL CDepartmentDlg::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,60,100); m_list.InsertColumn(5,"部门电话",LVCFMT_LEFT,100,100); m_list.InsertColumn(6,"部门开业时间",LVCFMT_LEFT,100,100); m_list.InsertColumn(7,"部门地址",LVCFMT_LEFT,200,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.SetCurSel(0); m_cInfo.ShowWindow(SW_SHOW); m_cTime.ShowWindow(SW_HIDE); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CDepartmentDlg::OnSelect() { // TODO: Add your control notification handler code here 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("dID = '%s'",m_info); break; case 1: str.Format("dName = '%s'",m_info); break; case 2: str.Format("dManagerID = '%s'",m_info); break; case 3: str.Format("dPID = '%s'",m_info); break; case 4: str.Format("dLevel = '%s'",m_info); break; case 5: str.Format("dPhone = '%s'",m_info); break; case 6: str.Format("dStartTime = '%s'",m_time.Format("%Y-%m-%d")); break; } sql.Format("select * from hrdepartment where %s",str); m_dataBase.OpenEx("DSN=HRM",0); m_departmentSet.m_pDatabase = &m_dataBase; m_departmentSet.Open(AFX_DB_USE_DEFAULT_TYPE,sql); if(!m_departmentSet.IsBOF()) m_departmentSet.MoveFirst(); int i = 0; while(!m_departmentSet.IsEOF()) { m_list.InsertItem(i,""); m_list.SetItemText(i,0,m_departmentSet.m_dID); m_list.SetItemText(i,1,m_departmentSet.m_dName); m_list.SetItemText(i,2,m_departmentSet.m_dManagerID); m_list.SetItemText(i,3,m_departmentSet.m_dPID); m_list.SetItemText(i,4,m_departmentSet.m_dLevel); m_list.SetItemText(i,5,m_departmentSet.m_dPhone); m_list.SetItemText(i,6,m_departmentSet.m_dStartTime.Format("%Y-%m-%d")); m_list.SetItemText(i,7,m_departmentSet.m_dAddres); i++; m_departmentSet.MoveNext(); } m_departmentSet.Close(); m_dataBase.Close(); } void CDepartmentDlg::OnAdd() { // TODO: Add your control notification handler code here CTime time = CTime::GetCurrentTime(); CModifyDemparmentDlg dlg; dlg.m_id = GetDepartmentID(); dlg.m_time = time; dlg.m_level = "1"; if(dlg.DoModal()==IDOK) { m_dataBase.OpenEx("DSN=HRM",0); CString sql; sql.Format("insert into hrdepartment(dID,dName,dManagerID,dPID,dLevel,dAddres,dPhone,dStartTime)\ Values('%s','%s','%s','%s','%s','%s','%s','%s')",dlg.m_id,dlg.m_name,dlg.m_manager,dlg.m_pid,dlg.m_level, dlg.m_addres,dlg.m_phone,dlg.m_time.Format("%Y-%m-%d")); m_dataBase.ExecuteSQL(sql); m_dataBase.Close(); } OnSelect(); } void CDepartmentDlg::OnModify() { CModifyDemparmentDlg dlg; dlg.m_id = m_list.GetItemText(m_listIndex,0); dlg.m_name = m_list.GetItemText(m_listIndex,1); dlg.m_manager = m_list.GetItemText(m_listIndex,2); dlg.m_pid = m_list.GetItemText(m_listIndex,3); dlg.m_level = m_list.GetItemText(m_listIndex,4); dlg.m_phone = m_list.GetItemText(m_listIndex,5); CString str = m_list.GetItemText(m_listIndex,6); dlg.m_addres = m_list.GetItemText(m_listIndex,7); int h,m,d; sscanf(str,"%d-%d-%d",&h,&m,&d); dlg.m_time = CTime::CTime(h,m,d,0,0,0); if(dlg.DoModal()==IDOK) { m_dataBase.OpenEx("DSN=HRM",0); CString sql; sql.Format("update hrdepartment set dName = '%s',dManagerID= '%s',dPID = '%s', dLevel= '%s',dAddres= '%s',\ dPhone= '%s',dStartTime= '%s' where dID= '%s'",dlg.m_name,dlg.m_manager,dlg.m_pid,dlg.m_level, dlg.m_addres,dlg.m_phone,dlg.m_time.Format("%Y-%m-%d"),dlg.m_id); m_dataBase.ExecuteSQL(sql); m_dataBase.Close(); } OnSelect(); } void CDepartmentDlg::OnDelete() { // TODO: Add your control notification handler code here CoInitialize(NULL); CString sql; sql.Format("delete from hrdepartment where dID ='%s'",m_list.GetItemText(m_listIndex,0)); m_dataBase.OpenEx("DSN=HRM",0); m_dataBase.ExecuteSQL(sql); m_departmentSet.Close(); m_dataBase.Close(); OnSelect(); } void CDepartmentDlg::OnSelchangeInfotype() { // TODO: Add your control notification handler code here int index = m_infoType.GetCurSel(); if(index == 6) { m_time = CTime::GetCurrentTime(); m_cInfo.ShowWindow(SW_HIDE); m_cTime.ShowWindow(SW_SHOW); UpdateData(false); } else { m_cInfo.ShowWindow(SW_SHOW); m_cTime.ShowWindow(SW_HIDE); } } void CDepartmentDlg::OnClose() { // TODO: Add your message handler code here and/or call default this->GetParent()->PostMessage(WM_QUIT); CDialog::OnClose(); } void CDepartmentDlg::OnClickList1(NMHDR* pNMHDR, LRESULT* pResult) { // TODO: Add your control notification handler code here m_listIndex = m_list.GetSelectionMark(); *pResult = 0; } CString CDepartmentDlg::GetDepartmentID() { CTime time = CTime::GetCurrentTime(); CString sql,temp,ID; sql.Format("select * from hrdepartment where dStartTime = '%s'",time.Format("%Y-%m-%d")); m_dataBase.OpenEx("DSN=HRM",0); m_departmentSet.m_pDatabase = &m_dataBase; m_departmentSet.Open(AFX_DB_USE_DEFAULT_TYPE,sql); if(!m_departmentSet.IsBOF()) m_departmentSet.MoveFirst(); if(!m_departmentSet.IsEOF()) { ID = temp = "0"; while(!m_departmentSet.IsEOF()) { temp = m_departmentSet.m_dID; m_departmentSet.MoveNext(); if(temp.Compare(ID) > 0) { ID = temp; } } 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_departmentSet.Close(); m_dataBase.Close(); return ID; }