📄 pageatnmanage.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 + -