📄 employeelist.cpp
字号:
// EmployeeList.cpp : implementation file
//
#include "stdafx.h"
#include "PersonelManage.h"
#include "EmployeeList.h"
#include "QueryEmpDlg.h"
#include "ModifyEmpInfoDlg.h"
#include "ado.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//extern CPersonelManageApp theApp;
/////////////////////////////////////////////////////////////////////////////
// CEmployeeList property page
IMPLEMENT_DYNCREATE(CEmployeeList, CResizablePage)
CEmployeeList::CEmployeeList() : CResizablePage(CEmployeeList::IDD)
{
//{{AFX_DATA_INIT(CEmployeeList)
//}}AFX_DATA_INIT
m_psp.dwFlags &= (~PSP_HASHELP);
m_psp.dwFlags |= ( PSP_USEHICON );
HICON hIconTab = AfxGetApp()->LoadIcon(IDI_PERSON);
m_psp.hIcon = hIconTab;
}
CEmployeeList::~CEmployeeList()
{
}
void CEmployeeList::DoDataExchange(CDataExchange* pDX)
{
CResizablePage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEmployeeList)
DDX_Control(pDX, IDC_LIST_EMPLOYEE, m_ctrlEmpList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEmployeeList, CResizablePage)
//{{AFX_MSG_MAP(CEmployeeList)
ON_WM_CTLCOLOR()
ON_NOTIFY(NM_RCLICK, IDC_LIST_EMPLOYEE, OnRclickListEmployee)
ON_COMMAND(ID_EMPLIST_ADD, OnEmplistAdd)
ON_COMMAND(ID_EMPLIST_DEL, OnEmplistDel)
ON_COMMAND(ID_EMPLIST_QUERYEMP, OnEmplistQueryemp)
ON_BN_CLICKED(IDC_BUTTON_MODIFYEMP, OnButtonModifyemp)
ON_BN_CLICKED(IDC_BUTTON_DELEMP, OnButtonDelemp)
ON_BN_CLICKED(IDC_BUTTON_QUERYEMP, OnButtonQueryemp)
ON_BN_CLICKED(IDC_BUTTON_REFRESH, OnButtonRefresh)
ON_COMMAND(ID_EMPLIST_MODEMP, OnEmplistModemp)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEmployeeList message handlers
BOOL CEmployeeList::OnInitDialog()
{
CResizablePage::OnInitDialog();
// TODO: Add extra initialization here
AddAnchor(IDC_LIST_EMPLOYEE, TOP_LEFT, BOTTOM_RIGHT);
AddAnchor(IDC_BUTTON_MODIFYEMP, TOP_LEFT);
AddAnchor(IDC_BUTTON_DELEMP, TOP_CENTER);
AddAnchor(IDC_BUTTON_QUERYEMP, TOP_CENTER);
AddAnchor(IDC_BUTTON_REFRESH, TOP_RIGHT);
DWORD dwStyle = m_ctrlEmpList.GetExtendedStyle();
dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;
m_ctrlEmpList.SetExtendedStyle(dwStyle);
//添加列
m_ctrlEmpList.InsertColumn(0, "EmployeeID", LVCFMT_LEFT, 64);
m_ctrlEmpList.InsertColumn(1, "Name", LVCFMT_LEFT, 64);
m_ctrlEmpList.InsertColumn(2, "LoginName", LVCFMT_LEFT, 64);
m_ctrlEmpList.InsertColumn(3, "Email", LVCFMT_LEFT, 128);
m_ctrlEmpList.InsertColumn(4, "DeptID", LVCFMT_LEFT, 64);
m_ctrlEmpList.InsertColumn(5, "BasicSalary", LVCFMT_LEFT, 64);
m_ctrlEmpList.InsertColumn(6, "Title", LVCFMT_LEFT, 128);
m_ctrlEmpList.InsertColumn(7, "Telephone", LVCFMT_LEFT, 64);
m_ctrlEmpList.InsertColumn(8, "OnboardDate", LVCFMT_LEFT, 128);
m_ctrlEmpList.InsertColumn(9, "SelfIntro", LVCFMT_LEFT, 128);
m_ctrlEmpList.InsertColumn(10, "VacationRemain", LVCFMT_LEFT, 64);
m_ctrlEmpList.InsertColumn(11, "EmployeeLevel", LVCFMT_LEFT, 64);
GetEmpList();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
HBRUSH CEmployeeList::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
// TODO: Change any attributes of the DC here
if( HasWhiteBackground() )
{
pDC->SetBkMode(TRANSPARENT);
return ::GetSysColorBrush( COLOR_WINDOW );
}
return CResizablePage::OnCtlColor(pDC, pWnd, nCtlColor);
}
//查询数据库获得员工信息,填充列表
void CEmployeeList::GetEmpList()
{
CString strQuery = "SELECT [EmployeeID],[Name],[LoginName],[Email],[DeptID],[BasicSalary],\
[Title],[Telephone],[OnboardDate],[SelfIntro],[VacationRemain]\
,[EmployeeLevel] FROM [BlueHill].[dbo].[tblEmployee]";
CString strEmployeeID;
CString strName;
CString strLoginName;
CString strEmail;
CString nDeptID;
CString nBasicSalary;
CString strTitle;
CString strTelephone;
CString strOnboardDate;
CString strSelfIntro;
CString nVacationRemain;
CString nEmployeeLevel;
CADODatabase *pDb = new CADODatabase;
try
{
if(pDb->Open())
{
CADORecordset *pRs = new CADORecordset(pDb);
if(pRs->Open(strQuery, CADORecordset::openQuery))
{
m_ctrlEmpList.DeleteAllItems();
int cur = 0;
while(!pRs->IsEOF())
{
pRs->GetFieldValue("EmployeeID", strEmployeeID);
m_ctrlEmpList.InsertItem(cur, strEmployeeID);
pRs->GetFieldValue("Name", strName);
m_ctrlEmpList.SetItemText(cur, 1, strName);
pRs->GetFieldValue("LoginName", strLoginName);
m_ctrlEmpList.SetItemText(cur, 2, strLoginName);
pRs->GetFieldValue("Email", strEmail);
m_ctrlEmpList.SetItemText(cur, 3, strEmail);
pRs->GetFieldValue("DeptID", nDeptID);
m_ctrlEmpList.SetItemText(cur, 4, nDeptID);
pRs->GetFieldValue("BasicSalary", nBasicSalary);
m_ctrlEmpList.SetItemText(cur, 5, nBasicSalary);
pRs->GetFieldValue("Title", strTitle);
m_ctrlEmpList.SetItemText(cur, 6, strTitle);
pRs->GetFieldValue("Telephone", strTelephone);
m_ctrlEmpList.SetItemText(cur, 7, strTelephone);
pRs->GetFieldValue("OnboardDate", strOnboardDate);
m_ctrlEmpList.SetItemText(cur, 8, strOnboardDate);
pRs->GetFieldValue("SelfIntro", strSelfIntro);
m_ctrlEmpList.SetItemText(cur, 9, strSelfIntro);
pRs->GetFieldValue("VacationRemain", nVacationRemain);
m_ctrlEmpList.SetItemText(cur, 10, nVacationRemain);
pRs->GetFieldValue("EmployeeLevel", nEmployeeLevel);
m_ctrlEmpList.SetItemText(cur, 11, nEmployeeLevel);
cur++;
pRs->MoveNext();
}
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
}
void CEmployeeList::OnRclickListEmployee(NMHDR* pNMHDR, LRESULT* pResult)
{
// TODO: Add your control notification handler code here
CMenu menu, *pSubMenu;
menu.LoadMenu(IDR_EMPLIST_POPUP);
pSubMenu = menu.GetSubMenu(0);
CPoint curPoint;
GetCursorPos(&curPoint);
pSubMenu->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, curPoint.x, curPoint.y, this);
*pResult = 0;
}
void CEmployeeList::OnEmplistAdd()
{
// TODO: Add your command handler code here
}
void CEmployeeList::OnEmplistDel()
{
// TODO: Add your command handler code here
OnButtonDelemp();
}
void CEmployeeList::OnEmplistQueryemp()
{
// TODO: Add your command handler code here
OnButtonQueryemp();
}
void CEmployeeList::OnButtonModifyemp()
{
// TODO: Add your control notification handler code here
CModifyEmpInfoDlg modify;
CString strEmpID;
int nItem = m_ctrlEmpList.GetNextItem(-1, LVIS_SELECTED);
if(nItem != -1)
{
strEmpID = m_ctrlEmpList.GetItemText(nItem, 0);
strEmpID.TrimRight();
modify.m_strEmpID = strEmpID;
modify.DoModal();
}
else
AfxMessageBox("请选择一条数据!");
}
void CEmployeeList::OnButtonDelemp()
{
// TODO: Add your control notification handler code here
int nItem = m_ctrlEmpList.GetNextItem(-1, LVIS_SELECTED);
if(nItem != -1)
{
if(AfxMessageBox("确定要删除这条记录吗?", MB_YESNO | MB_ICONSTOP) == IDNO)
return;
CString cmdText, empID;
empID = m_ctrlEmpList.GetItemText(nItem, 0);
empID.TrimRight();
cmdText.Format("DELETE FROM [tblEmployee] WHERE EmployeeID = %s", empID);
CADODatabase *pAdoDb = new CADODatabase();
if(pAdoDb->Open())
{
CADOCommand pCmd(pAdoDb, cmdText, CADOCommand::typeCmdText);
if(pCmd.Execute(CADOCommand::typeCmdText))
{
m_ctrlEmpList.DeleteItem(nItem);
MessageBox("已成功删除记录!");
}
}
pAdoDb->Close();
delete pAdoDb;
}
else
AfxMessageBox("请选择一条数据!");
}
void CEmployeeList::OnButtonQueryemp()
{
// TODO: Add your control notification handler code here
CString query = "SELECT [EmployeeID],[Name],[LoginName],[Email],[DeptID],[BasicSalary],[Title],[Telephone],[OnboardDate],[SelfIntro],[VacationRemain],[EmployeeLevel] FROM [tblEmployee]";
CString strEmployeeID;
CString strName;
CString strLoginName;
CString strEmail;
CString nDeptID;
CString nBasicSalary;
CString strTitle;
CString strTelephone;
CString strOnboardDate;
CString strSelfIntro;
CString nVacationRemain;
CString nEmployeeLevel;
CString searchName, searchEmail, searchStrDeptID;
long searchDeptID;
CQueryEmpDlg queryEmp;
if(queryEmp.DoModal() == IDOK)
{
searchName = queryEmp.m_strName;
searchEmail = queryEmp.m_strEmail;
searchDeptID = queryEmp.m_nSelDeptID;
searchStrDeptID.Format("%d", searchDeptID);
//得到查询串
if(strName.GetLength() > 0)
{
query += " WHERE Name = '" + searchName + "' ";
if(strEmail.GetLength() > 0)
query += " AND Email = '" + searchEmail + "' ";
if(searchDeptID != -1)
query += " AND DeptID = " + searchStrDeptID;
}
else if(searchEmail.GetLength() > 0)
{
query += " WHERE Email = '" + searchEmail + "' ";
if(searchDeptID != -1)
query += " AND DeptID = " + searchStrDeptID;
}
else if(searchDeptID != -1)
query += " WHERE DeptID = " + searchStrDeptID;
////////////////////////////////////////////////////
CADODatabase *pDb = new CADODatabase;
try
{
if(pDb->Open())
{
CADORecordset *pRs = new CADORecordset(pDb);
if(pRs->Open(query, CADORecordset::openQuery))
{
if(pRs->GetRecordCount() > 0)
{
m_ctrlEmpList.DeleteAllItems();
int cur = 0;
while(!pRs->IsEOF())
{
pRs->GetFieldValue("EmployeeID", strEmployeeID);
m_ctrlEmpList.InsertItem(cur, strEmployeeID);
pRs->GetFieldValue("Name", strName);
m_ctrlEmpList.SetItemText(cur, 1, strName);
pRs->GetFieldValue("LoginName", strLoginName);
m_ctrlEmpList.SetItemText(cur, 2, strLoginName);
pRs->GetFieldValue("Email", strEmail);
m_ctrlEmpList.SetItemText(cur, 3, strName);
pRs->GetFieldValue("DeptID", nDeptID);
m_ctrlEmpList.SetItemText(cur, 4, nDeptID);
pRs->GetFieldValue("BasicSalary", nBasicSalary);
m_ctrlEmpList.SetItemText(cur, 5, nBasicSalary);
pRs->GetFieldValue("Title", strTitle);
m_ctrlEmpList.SetItemText(cur, 6, strTitle);
pRs->GetFieldValue("Telephone", strTelephone);
m_ctrlEmpList.SetItemText(cur, 7, strTelephone);
pRs->GetFieldValue("OnboardDate", strOnboardDate);
m_ctrlEmpList.SetItemText(cur, 8, strOnboardDate);
pRs->GetFieldValue("SelfIntro", strSelfIntro);
m_ctrlEmpList.SetItemText(cur, 9, strSelfIntro);
pRs->GetFieldValue("VacationRemain", nVacationRemain);
m_ctrlEmpList.SetItemText(cur, 10, nVacationRemain);
pRs->GetFieldValue("EmployeeLevel", nEmployeeLevel);
m_ctrlEmpList.SetItemText(cur, 11, nEmployeeLevel);
cur++;
pRs->MoveNext();
}
}
else
AfxMessageBox("未得到任何信息!");
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
}
}
void CEmployeeList::OnButtonRefresh()
{
// TODO: Add your control notification handler code here
GetEmpList();
}
void CEmployeeList::OnEmplistModemp()
{
// TODO: Add your command handler code here
OnButtonModifyemp();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -