⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pageatnmanage.cpp

📁 人事管理系统
💻 CPP
字号:
// PageAtnManage.cpp : implementation file
//

#include "stdafx.h"
#include "personelmanage.h"
#include "PageAtnManage.h"

#include "QuerySysEntDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPageAtnManage property page

IMPLEMENT_DYNCREATE(CPageAtnManage, CResizablePage)

CPageAtnManage::CPageAtnManage() : CResizablePage(CPageAtnManage::IDD)
{
	//{{AFX_DATA_INIT(CPageAtnManage)
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= (~PSP_HASHELP);
	m_psp.dwFlags |= ( PSP_USEHICON );
	HICON hIconTab = AfxGetApp()->LoadIcon(IDI_PERSON);
	m_psp.hIcon = hIconTab;
}

CPageAtnManage::~CPageAtnManage()
{
}

void CPageAtnManage::DoDataExchange(CDataExchange* pDX)
{
	CResizablePage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPageAtnManage)
	DDX_Control(pDX, IDC_LIST_ATN, m_ctrlAtn);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPageAtnManage, CResizablePage)
	//{{AFX_MSG_MAP(CPageAtnManage)
	ON_BN_CLICKED(IDC_BUTTON_HISTORY, OnButtonHistory)
	ON_BN_CLICKED(IDC_BUTTON_TODAY, OnButtonToday)
	ON_BN_CLICKED(IDC_BUTTON_SET, OnButtonSet)
	ON_NOTIFY(NM_RCLICK, IDC_LIST_ATN, OnRclickListAtn)
	ON_BN_CLICKED(IDC_BUTTON_SHOWTABLE, OnButtonShowtable)
	ON_BN_CLICKED(IDC_BUTTON_SHOWALL, OnButtonShowall)
	ON_BN_CLICKED(IDC_BUTTON_DEL, OnButtonDel)
	ON_COMMAND(ID_ATN_DEL, OnAtnDel)
	ON_COMMAND(ID_ATN_HISTORY, OnAtnHistory)
	ON_COMMAND(ID_ATN_IMPORT, OnAtnImport)
	ON_COMMAND(ID_ATN_SET, OnAtnSet)
	ON_COMMAND(ID_ATN_TODAY, OnAtnToday)
	ON_COMMAND(ID_ATN_SHOWALL, OnAtnShowall)
	ON_COMMAND(ID_ATN_SHOWTBL, OnAtnShowtbl)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPageAtnManage message handlers

BOOL CPageAtnManage::OnInitDialog() 
{
	CResizablePage::OnInitDialog();
	
	// TODO: Add extra initialization here
	AddAnchor(IDC_BUTTON_TODAY, TOP_LEFT);
	AddAnchor(IDC_BUTTON_HISTORY, TOP_LEFT);
	AddAnchor(IDC_BUTTON_SET, TOP_LEFT);
	AddAnchor(IDC_BUTTON_IMPORT, TOP_LEFT);
	AddAnchor(IDC_BUTTON_DEL, TOP_LEFT);
	AddAnchor(IDC_LIST_ATN, TOP_LEFT, BOTTOM_RIGHT);
	AddAnchor(IDC_BUTTON_SHOWALL, BOTTOM_LEFT);
	AddAnchor(IDC_BUTTON_SHOWTABLE, BOTTOM_LEFT);


	DWORD dwStyle = m_ctrlAtn.GetExtendedStyle();
	dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;
	m_ctrlAtn.SetExtendedStyle(dwStyle);

	FillAtnList();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPageAtnManage::FillAtnList()
{
	CString strAttendID, strEmployeeID, strName, strDeptID, strBreachTime, strRecorderID, strType, strAskReview, strDate;

	CString query = "SELECT tblAttendance.*, tblEmployee.Name, tblEmployee.DeptID FROM tblAttendance INNER JOIN tblEmployee ON tblAttendance.EmployeeID = tblEmployee.EmployeeID";

	CADODatabase *pDb = new CADODatabase;
	try
	{
		if(pDb->Open())
		{
			CADORecordset *pRs = new CADORecordset(pDb);
			if(pRs->Open(query, CADORecordset::openQuery))
			{
				DelAllColumns();
				m_ctrlAtn.InsertColumn(0, "AttendID", LVCFMT_LEFT, 128);
				m_ctrlAtn.InsertColumn(1, "EmployeeID", LVCFMT_LEFT, 64);
				m_ctrlAtn.InsertColumn(2, "Name", LVCFMT_LEFT, 128);
				m_ctrlAtn.InsertColumn(3, "DeptID", LVCFMT_LEFT, 64);
				m_ctrlAtn.InsertColumn(4, "BreachTime", LVCFMT_LEFT, 128);
				m_ctrlAtn.InsertColumn(5, "RecorderID", LVCFMT_LEFT, 64);
				m_ctrlAtn.InsertColumn(6, "Type", LVCFMT_LEFT, 128);
				m_ctrlAtn.InsertColumn(7, "AskReview", LVCFMT_LEFT, 64);
				m_ctrlAtn.InsertColumn(8, "Date", LVCFMT_LEFT, 128);

				int cur = 0;
				while(!pRs->IsEOF())
				{
					pRs->GetFieldValue("AttendID", strAttendID);
					m_ctrlAtn.InsertItem(cur, strAttendID);
					pRs->GetFieldValue("EmployeeID", strEmployeeID);
					m_ctrlAtn.SetItemText(cur, 1, strEmployeeID);
					pRs->GetFieldValue("Name", strName);
					m_ctrlAtn.SetItemText(cur, 2, strName);
					pRs->GetFieldValue("DeptID", strDeptID);
					m_ctrlAtn.SetItemText(cur, 3, strDeptID);
					pRs->GetFieldValue("BreachTime", strBreachTime);
					m_ctrlAtn.SetItemText(cur, 4, strBreachTime);
					pRs->GetFieldValue("RecorderID", strRecorderID);
					m_ctrlAtn.SetItemText(cur, 5, strRecorderID);
					pRs->GetFieldValue("Type", strType);
					m_ctrlAtn.SetItemText(cur, 6, strType);
					pRs->GetFieldValue("AskReview", strAskReview);
					m_ctrlAtn.SetItemText(cur, 7, strAskReview);
					pRs->GetFieldValue("Date", strDate);
					m_ctrlAtn.SetItemText(cur, 8, strDate);

					cur++;
					pRs->MoveNext();
				}
				pRs->Close();
			}
			delete pRs;
			pDb->Close();
		}
		delete pDb;
	}
	catch(CADOException)
	{
	}
}

void CPageAtnManage::OnButtonHistory() 
{
	// TODO: Add your control notification handler code here
	CQuerySysEntDlg history;
	COleDateTime start, end;
	CString strStart, strEnd;
	COleDateTimeSpan ts(1, 0, 0, 0);//一天
	if(history.DoModal() == IDOK)
	{
		CString strAttendID, strEmployeeID, strName, strDeptID, strBreachTime, strRecorderID, strType, strAskReview, strDate;
		start = history.m_tStart;
		end = history.m_tEnd;
		end += ts;
		strStart = start.Format("%Y-%m-%d");
		strEnd = end.Format("%Y-%m-%d");
		CString query = "SELECT a.*, e.Name, e.DeptID FROM tblAttendance as a INNER JOIN tblEmployee as e ON a.EmployeeID = e.EmployeeID ";
		query += " WHERE a.BreachTime > '" + strStart + "' AND a.BreachTime < '" + strEnd + "'";  

		CADODatabase *pDb = new CADODatabase;
		try
		{
			if(pDb->Open())
			{
				CADORecordset *pRs = new CADORecordset(pDb);
				if(pRs->Open(query, CADORecordset::openQuery))
				{
					if(pRs->GetRecordCount() > 0)
					{	
						DelAllColumns();
						m_ctrlAtn.InsertColumn(0, "AttendID", LVCFMT_LEFT, 128);
						m_ctrlAtn.InsertColumn(1, "EmployeeID", LVCFMT_LEFT, 64);
						m_ctrlAtn.InsertColumn(2, "Name", LVCFMT_LEFT, 128);
						m_ctrlAtn.InsertColumn(3, "DeptID", LVCFMT_LEFT, 64);
						m_ctrlAtn.InsertColumn(4, "BreachTime", LVCFMT_LEFT, 128);
						m_ctrlAtn.InsertColumn(5, "RecorderID", LVCFMT_LEFT, 64);
						m_ctrlAtn.InsertColumn(6, "Type", LVCFMT_LEFT, 128);
						m_ctrlAtn.InsertColumn(7, "AskReview", LVCFMT_LEFT, 64);
						m_ctrlAtn.InsertColumn(8, "Date", LVCFMT_LEFT, 128);

						int cur = 0;
						while(!pRs->IsEOF())
						{
							pRs->GetFieldValue("AttendID", strAttendID);
							m_ctrlAtn.InsertItem(cur, strAttendID);
							pRs->GetFieldValue("EmployeeID", strEmployeeID);
							m_ctrlAtn.SetItemText(cur, 1, strEmployeeID);
							pRs->GetFieldValue("Name", strName);
							m_ctrlAtn.SetItemText(cur, 2, strName);
							pRs->GetFieldValue("DeptID", strDeptID);
							m_ctrlAtn.SetItemText(cur, 3, strDeptID);
							pRs->GetFieldValue("BreachTime", strBreachTime);
							m_ctrlAtn.SetItemText(cur, 4, strBreachTime);
							pRs->GetFieldValue("RecorderID", strRecorderID);
							m_ctrlAtn.SetItemText(cur, 5, strRecorderID);
							pRs->GetFieldValue("Type", strType);
							m_ctrlAtn.SetItemText(cur, 6, strType);
							pRs->GetFieldValue("AskReview", strAskReview);
							m_ctrlAtn.SetItemText(cur, 7, strAskReview);
							pRs->GetFieldValue("Date", strDate);
							m_ctrlAtn.SetItemText(cur, 8, strDate);

							cur++;
							pRs->MoveNext();
						}
					}
					else
						AfxMessageBox("未查询到任何数据!");
					pRs->Close();
				}
				delete pRs;
				pDb->Close();
			}
			delete pDb;
		}
		catch(CADOException)
		{
		}
	}
	
}

void CPageAtnManage::OnButtonToday() 
{
	// TODO: Add your control notification handler code here
	COleDateTime today = COleDateTime::GetCurrentTime();
	CString strToday = today.Format("%Y-%m-%d");
	COleDateTimeSpan ts(1, 0, 0, 0);
	COleDateTime nextDay = today + ts;
	CString strNextDay = nextDay.Format("%Y-%m-%d");

	CString strAttendID, strEmployeeID, strName, strDeptID, strBreachTime, strRecorderID, strType, strAskReview, strDate;

	CString query = "SELECT a.*, e.Name, e.DeptID FROM tblAttendance as a INNER JOIN tblEmployee as e ON a.EmployeeID = e.EmployeeID ";
	query += " WHERE a.BreachTime > '" + strToday + "' AND a.BreachTime < '" + strNextDay + "'";  

	CADODatabase *pDb = new CADODatabase;
	try
	{
		if(pDb->Open())
		{
			CADORecordset *pRs = new CADORecordset(pDb);
			if(pRs->Open(query, CADORecordset::openQuery))
			{
				if(pRs->GetRecordCount() > 0)
				{	
					DelAllColumns();
					m_ctrlAtn.InsertColumn(0, "AttendID", LVCFMT_LEFT, 128);
					m_ctrlAtn.InsertColumn(1, "EmployeeID", LVCFMT_LEFT, 64);
					m_ctrlAtn.InsertColumn(2, "Name", LVCFMT_LEFT, 128);
					m_ctrlAtn.InsertColumn(3, "DeptID", LVCFMT_LEFT, 64);
					m_ctrlAtn.InsertColumn(4, "BreachTime", LVCFMT_LEFT, 128);
					m_ctrlAtn.InsertColumn(5, "RecorderID", LVCFMT_LEFT, 64);
					m_ctrlAtn.InsertColumn(6, "Type", LVCFMT_LEFT, 128);
					m_ctrlAtn.InsertColumn(7, "AskReview", LVCFMT_LEFT, 64);
					m_ctrlAtn.InsertColumn(8, "Date", LVCFMT_LEFT, 128);

					int cur = 0;
					while(!pRs->IsEOF())
					{
						pRs->GetFieldValue("AttendID", strAttendID);
						m_ctrlAtn.InsertItem(cur, strAttendID);
						pRs->GetFieldValue("EmployeeID", strEmployeeID);
						m_ctrlAtn.SetItemText(cur, 1, strEmployeeID);
						pRs->GetFieldValue("Name", strName);
						m_ctrlAtn.SetItemText(cur, 2, strName);
						pRs->GetFieldValue("DeptID", strDeptID);
						m_ctrlAtn.SetItemText(cur, 3, strDeptID);
						pRs->GetFieldValue("BreachTime", strBreachTime);
						m_ctrlAtn.SetItemText(cur, 4, strBreachTime);
						pRs->GetFieldValue("RecorderID", strRecorderID);
						m_ctrlAtn.SetItemText(cur, 5, strRecorderID);
						pRs->GetFieldValue("Type", strType);
						m_ctrlAtn.SetItemText(cur, 6, strType);
						pRs->GetFieldValue("AskReview", strAskReview);
						m_ctrlAtn.SetItemText(cur, 7, strAskReview);
						pRs->GetFieldValue("Date", strDate);
						m_ctrlAtn.SetItemText(cur, 8, strDate);

						cur++;
						pRs->MoveNext();
					}
				}
				else
					AfxMessageBox("未查询到任何数据!");
				pRs->Close();
			}
			delete pRs;
			pDb->Close();
		}
		delete pDb;
	}
	catch(CADOException)
	{
	}	
}

void CPageAtnManage::OnButtonSet() 
{
	// TODO: Add your control notification handler code here
	
}

void CPageAtnManage::OnRclickListAtn(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	CMenu menu, *pSubMenu;
	menu.LoadMenu(IDR_ATN_POPUP);
	pSubMenu = menu.GetSubMenu(0);
	CPoint curPoint;
	GetCursorPos(&curPoint);
	pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, curPoint.x, curPoint.y, this);
	
	*pResult = 0;
}

void CPageAtnManage::OnButtonShowtable() 
{
	// TODO: Add your control notification handler code here
	CString strAttendID, strDeptID, strBreachTime, strRecorderID, strType, strAskReview, strDate;

	CADODatabase *pDb = new CADODatabase;
	try
	{
		if(pDb->Open())
		{
			CADORecordset *pRs = new CADORecordset(pDb);
			if(pRs->Open("tblAttendance", CADORecordset::openTable))
			{
				DelAllColumns();
				m_ctrlAtn.InsertColumn(0, "AttendID", LVCFMT_LEFT, 128);
				m_ctrlAtn.InsertColumn(1, "EmployeeID", LVCFMT_LEFT, 64);
				m_ctrlAtn.InsertColumn(2, "BreachTime", LVCFMT_LEFT, 128);
				m_ctrlAtn.InsertColumn(3, "RecorderID", LVCFMT_LEFT, 64);
				m_ctrlAtn.InsertColumn(4, "Type", LVCFMT_LEFT, 128);
				m_ctrlAtn.InsertColumn(5, "AskReview", LVCFMT_LEFT, 64);
				m_ctrlAtn.InsertColumn(6, "Date", LVCFMT_LEFT, 128);

				int cur = 0;
				while(!pRs->IsEOF())
				{
					pRs->GetFieldValue("AttendID", strAttendID);
					m_ctrlAtn.InsertItem(cur, strAttendID);
					pRs->GetFieldValue("EmployeeID", strDeptID);
					m_ctrlAtn.SetItemText(cur, 1, strDeptID);
					pRs->GetFieldValue("BreachTime", strBreachTime);
					m_ctrlAtn.SetItemText(cur, 2, strBreachTime);
					pRs->GetFieldValue("RecorderID", strRecorderID);
					m_ctrlAtn.SetItemText(cur, 3, strRecorderID);
					pRs->GetFieldValue("Type", strType);
					m_ctrlAtn.SetItemText(cur, 4, strType);
					pRs->GetFieldValue("AskReview", strAskReview);
					m_ctrlAtn.SetItemText(cur, 5, strAskReview);
					pRs->GetFieldValue("Date", strDate);
					m_ctrlAtn.SetItemText(cur, 6, strDate);

					cur++;
					pRs->MoveNext();
				}
				pRs->Close();
			}
			delete pRs;
			pDb->Close();
		}
		delete pDb;
	}
	catch(CADOException)
	{
	}
	
}

void CPageAtnManage::DelAllColumns()
{
	m_ctrlAtn.DeleteAllItems();
	for(int i = 0, j = m_ctrlAtn.GetHeaderCtrl()->GetItemCount(); i < j; i++)
		m_ctrlAtn.DeleteColumn(0);
}

void CPageAtnManage::OnButtonShowall() 
{
	// TODO: Add your control notification handler code here
	FillAtnList();
}

void CPageAtnManage::OnButtonDel() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_ctrlAtn.GetNextItem(-1, LVIS_SELECTED);
	if(nItem != -1)
	{
		if(AfxMessageBox("确定要删除这条记录吗?", MB_YESNO | MB_ICONSTOP) == IDNO)
			return;
		CString cmdText, attendID;
		attendID = m_ctrlAtn.GetItemText(nItem, 0);
		attendID.TrimRight();
		cmdText.Format("DELETE FROM [tblAttendance] WHERE AttendID = %s", attendID);

		CADODatabase *pAdoDb = new CADODatabase();				
		if(pAdoDb->Open())
		{
			CADOCommand pCmd(pAdoDb, cmdText, CADOCommand::typeCmdText);
			if(pCmd.Execute(CADOCommand::typeCmdText))
			{
				m_ctrlAtn.DeleteItem(nItem);
				MessageBox("已成功删除记录!");
			}
		}
		pAdoDb->Close();
		delete pAdoDb;
	}
	else
		AfxMessageBox("请选择一条数据!");
}

void CPageAtnManage::OnAtnDel() 
{
	// TODO: Add your command handler code here
	OnButtonDel();
	
}

void CPageAtnManage::OnAtnHistory() 
{
	// TODO: Add your command handler code here
	OnButtonHistory();
	
}

void CPageAtnManage::OnAtnImport() 
{
	// TODO: Add your command handler code here
	
}

void CPageAtnManage::OnAtnSet() 
{
	// TODO: Add your command handler code here
	
}

void CPageAtnManage::OnAtnToday() 
{
	// TODO: Add your command handler code here
	OnButtonToday();
	
}

void CPageAtnManage::OnAtnShowall() 
{
	// TODO: Add your command handler code here
	FillAtnList();
	
}

void CPageAtnManage::OnAtnShowtbl() 
{
	// TODO: Add your command handler code here
	OnButtonShowtable();
	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -