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

📄 pagevocationmanage.cpp

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

#include "stdafx.h"
#include "PersonelManage.h"
#include "PageVocationManage.h"
#include "SelDeptDlg.h"
#include "SelEmpDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CPageVocationManage property page

IMPLEMENT_DYNCREATE(CPageVocationManage, CResizablePage)

CPageVocationManage::CPageVocationManage() : CResizablePage(CPageVocationManage::IDD)
{
	//{{AFX_DATA_INIT(CPageVocationManage)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	m_psp.dwFlags &= (~PSP_HASHELP);
	m_psp.dwFlags |= ( PSP_USEHICON );
	HICON hIconTab = AfxGetApp()->LoadIcon(IDI_PERSON);
	m_psp.hIcon = hIconTab;
}

CPageVocationManage::~CPageVocationManage()
{
}

void CPageVocationManage::DoDataExchange(CDataExchange* pDX)
{
	CResizablePage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPageVocationManage)
	DDX_Control(pDX, IDC_LIST_VOC, m_ctrlVocList);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPageVocationManage, CResizablePage)
	//{{AFX_MSG_MAP(CPageVocationManage)
	ON_BN_CLICKED(IDC_BUTTON_DELVOC, OnButtonDelvoc)
	ON_BN_CLICKED(IDC_BUTTON_CANCELVOC, OnButtonCancelvoc)
	ON_BN_CLICKED(IDC_BUTTON_BYGRP, OnButtonBygrp)
	ON_BN_CLICKED(IDC_BUTTON_QUERYEMP, OnButtonQueryemp)
	ON_BN_CLICKED(IDC_BUTTON_SHOWALL, OnButtonShowall)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPageVocationManage message handlers

BOOL CPageVocationManage::OnInitDialog() 
{
	CResizablePage::OnInitDialog();
	
	// TODO: Add extra initialization here
	AddAnchor(IDC_BUTTON_DELVOC, TOP_LEFT);
	AddAnchor(IDC_BUTTON_CANCELVOC, TOP_LEFT);
	AddAnchor(IDC_BUTTON_BYGRP, TOP_LEFT);
	AddAnchor(IDC_BUTTON_QUERYEMP, TOP_LEFT);
	AddAnchor(IDC_LIST_VOC, TOP_LEFT, BOTTOM_RIGHT);
	AddAnchor(IDC_BUTTON_SHOWALL, BOTTOM_RIGHT);

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

	//显示全部信息
	GetVocList();
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CPageVocationManage::GetVocList()
{
	CString strLeaveID;
	CString strEmployeeID;
	CString strSubmitTime;
	CString strStartTime;
	CString strEndTime;
	CString strReason;
	CString strTypeID;
	CString strHours;
	CString strStatus;
	CString strApproverID;
	CString strDenyReason;

	CADODatabase *pDb = new CADODatabase;
	try
	{
		if(pDb->Open())
		{
			CADORecordset *pRs = new CADORecordset(pDb);
			if(pRs->Open("tblLeave", CADORecordset::openTable))
			{
				//m_ctrlVocList.DeleteAllItems();
				DelAllColumns();
				//以下添加表头
				m_ctrlVocList.InsertColumn(0, "LeaveID", LVCFMT_LEFT, 64);
				m_ctrlVocList.InsertColumn(1, "EmployeeID", LVCFMT_LEFT, 64);
				m_ctrlVocList.InsertColumn(2, "SubmitTime", LVCFMT_LEFT, 128);
				m_ctrlVocList.InsertColumn(3, "StartTime", LVCFMT_LEFT, 128);
				m_ctrlVocList.InsertColumn(4, "EndTime", LVCFMT_LEFT, 128);
				m_ctrlVocList.InsertColumn(5, "Reason", LVCFMT_LEFT, 128);
				m_ctrlVocList.InsertColumn(6, "TypeID", LVCFMT_LEFT, 64);
				m_ctrlVocList.InsertColumn(7, "Hours", LVCFMT_LEFT, 64);
				m_ctrlVocList.InsertColumn(8, "Status", LVCFMT_LEFT, 64);
				m_ctrlVocList.InsertColumn(9, "ApproverID", LVCFMT_LEFT, 64);
				m_ctrlVocList.InsertColumn(10, "DenyReason", LVCFMT_LEFT, 128);

				
				int cur = 0;
				while(!pRs->IsEOF())
				{
					pRs->GetFieldValue("LeaveID", strLeaveID);
					m_ctrlVocList.InsertItem(cur, strLeaveID);
					pRs->GetFieldValue("EmployeeID", strEmployeeID);
					m_ctrlVocList.SetItemText(cur, 1, strEmployeeID);
					pRs->GetFieldValue("SubmitTime", strSubmitTime);
					m_ctrlVocList.SetItemText(cur, 2, strSubmitTime);
					pRs->GetFieldValue("StartTime", strStartTime);
					m_ctrlVocList.SetItemText(cur, 3, strStartTime);
					pRs->GetFieldValue("EndTime", strEndTime);
					m_ctrlVocList.SetItemText(cur, 4, strEndTime);
					pRs->GetFieldValue("Reason", strReason);
					m_ctrlVocList.SetItemText(cur, 5, strReason);
					pRs->GetFieldValue("TypeID", strTypeID);
					m_ctrlVocList.SetItemText(cur, 6, strTypeID);
					pRs->GetFieldValue("Hours", strHours);
					m_ctrlVocList.SetItemText(cur, 7, strHours);
					pRs->GetFieldValue("Status", strStatus);
					m_ctrlVocList.SetItemText(cur, 8, strStatus);
					pRs->GetFieldValue("ApproverID", strApproverID);
					m_ctrlVocList.SetItemText(cur, 9, strApproverID);
					pRs->GetFieldValue("DenyReason", strDenyReason);
					m_ctrlVocList.SetItemText(cur, 10, strDenyReason);

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

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

		CADODatabase *pAdoDb = new CADODatabase();				
		if(pAdoDb->Open())
		{
			CADOCommand pCmd(pAdoDb, cmdText, CADOCommand::typeCmdText);
			if(pCmd.Execute(CADOCommand::typeCmdText))
			{
				m_ctrlVocList.DeleteItem(nItem);
				MessageBox("已成功删除记录!");
			}
		}
		pAdoDb->Close();
		delete pAdoDb;
	}
	
}

void CPageVocationManage::OnButtonCancelvoc() 
{
	// TODO: Add your control notification handler code here
	int nItem = m_ctrlVocList.GetNextItem(-1, LVIS_SELECTED);
	if(nItem != -1)
	{
		if(AfxMessageBox("确定要取消申请吗?", MB_YESNO | MB_ICONSTOP) == IDNO)
			return;
	}
	
}

void CPageVocationManage::OnButtonBygrp() 
{
	// TODO: Add your control notification handler code here
	CSelDeptDlg selDept;
	if(selDept.DoModal() == IDOK)
	{
		CString strLeaveID, strEmpName, strSubmitTime, strReason, strStatus, strDenyReason;
		long nDeptID = -1;
		CString selDeptName = selDept.GetSelDeptName();
		selDeptName.TrimRight();

		CString strQuery = "SELECT [DeptID] FROM [tblDepartment] WHERE DeptName = '" + selDeptName + "'";

		CADODatabase *pDb = new CADODatabase;
		try
		{
			if(pDb->Open())
			{
				CADORecordset *pRs = new CADORecordset(pDb);
				//首先由部门名得到部门ID
				if(pRs->Open(strQuery, CADORecordset::openQuery))
				{
					if(pRs->GetRecordCount() > 0)
						pRs->GetFieldValue("DeptID", nDeptID);
					pRs->Close();
				}
				CADOParameter pInDeptID(CADORecordset::typeInteger, sizeof(long), CADOParameter::paramInput);
				pInDeptID.SetValue(nDeptID);

				CADOCommand pCmd(pDb, "spwinDeptLeave", CADOCommand::typeCmdStoredProc);
				pCmd.AddParameter(&pInDeptID);
				if(pRs->Execute(&pCmd))
				{
					if(pRs->GetRecordCount() > 0)
					{
						DelAllColumns();

						m_ctrlVocList.InsertColumn(0, "请假序号", LVCFMT_LEFT, 64);
						m_ctrlVocList.InsertColumn(1, "员工姓名", LVCFMT_LEFT, 64);
						m_ctrlVocList.InsertColumn(2, "提交时间", LVCFMT_LEFT, 128);
						m_ctrlVocList.InsertColumn(3, "请假原因", LVCFMT_LEFT, 128);
						m_ctrlVocList.InsertColumn(4, "状态", LVCFMT_LEFT, 64);
						m_ctrlVocList.InsertColumn(5, "拒绝原因", LVCFMT_LEFT, 128);

						int cur = 0;
						while(!pRs->IsEOF())
						{
							pRs->GetFieldValue("LeaveID", strLeaveID);
							m_ctrlVocList.InsertItem(cur, strLeaveID);
							pRs->GetFieldValue("员工", strEmpName);
							m_ctrlVocList.SetItemText(cur, 1, strEmpName);
							pRs->GetFieldValue("提交时间", strSubmitTime);
							m_ctrlVocList.SetItemText(cur, 2, strSubmitTime);
							pRs->GetFieldValue("请假原因", strReason);
							m_ctrlVocList.SetItemText(cur, 3, strReason);
							pRs->GetFieldValue("状态", strStatus);
							m_ctrlVocList.SetItemText(cur, 4, strStatus);
							pRs->GetFieldValue("拒绝原因", strDenyReason);
							m_ctrlVocList.SetItemText(cur, 5, strDenyReason);
							
							cur++;
							pRs->MoveNext();
						}
					}
					else
						AfxMessageBox("未得到任何信息!");
					pRs->Close();
				}
				delete pRs;
				pDb->Close();
			}
			delete pDb;
		}
		catch(CADOException)
		{
		}
	}
}

void CPageVocationManage::OnButtonQueryemp() 
{
	// TODO: Add your control notification handler code here
	CSelEmpDlg selEmp;
	if(selEmp.DoModal() == IDOK)
	{
		CString strLeaveID, strEmpName, strSubmitTime, strReason, strStatus, strDenyReason;
		CString strSelEmpID;
		long nSelEmpID;
		strSelEmpID = selEmp.GetSelEmpID();
		strSelEmpID.TrimRight();
		nSelEmpID = _ttoi(strSelEmpID);

		//_variant_t vtFld;
		//vtFld.vt = VT_UI4;
		//vtFld.ulVal = nSelEmpID;

		CADODatabase *pDb = new CADODatabase;
		try
		{
			if(pDb->Open())
			{
				CADORecordset *pRs = new CADORecordset(pDb);

				CADOParameter pInEmpID(CADORecordset::typeInteger, sizeof(long), CADOParameter::paramInput);
				pInEmpID.SetValue(nSelEmpID);
				//pInEmpID.SetValue(vtFld);
				
				CADOCommand pCmd(pDb, "spwinEmpLeave", CADOCommand::typeCmdStoredProc);
				pCmd.AddParameter(&pInEmpID);
				if(pRs->Execute(&pCmd))
				{
					if(pRs->GetRecordCount() > 0)
					{
						DelAllColumns();

						m_ctrlVocList.InsertColumn(0, "请假序号", LVCFMT_LEFT, 64);
						m_ctrlVocList.InsertColumn(1, "员工姓名", LVCFMT_LEFT, 64);
						m_ctrlVocList.InsertColumn(2, "提交时间", LVCFMT_LEFT, 128);
						m_ctrlVocList.InsertColumn(3, "请假原因", LVCFMT_LEFT, 128);
						m_ctrlVocList.InsertColumn(4, "状态", LVCFMT_LEFT, 64);
						m_ctrlVocList.InsertColumn(5, "拒绝原因", LVCFMT_LEFT, 128);

						int cur = 0;
						while(!pRs->IsEOF())
						{
							pRs->GetFieldValue("LeaveID", strLeaveID);
							m_ctrlVocList.InsertItem(cur, strLeaveID);
							pRs->GetFieldValue("员工", strEmpName);
							m_ctrlVocList.SetItemText(cur, 1, strEmpName);
							pRs->GetFieldValue("提交时间", strSubmitTime);
							m_ctrlVocList.SetItemText(cur, 2, strSubmitTime);
							pRs->GetFieldValue("请假原因", strReason);
							m_ctrlVocList.SetItemText(cur, 3, strReason);
							pRs->GetFieldValue("状态", strStatus);
							m_ctrlVocList.SetItemText(cur, 4, strStatus);
							pRs->GetFieldValue("拒绝原因", strDenyReason);
							m_ctrlVocList.SetItemText(cur, 5, strDenyReason);
							
							cur++;
							pRs->MoveNext();
						}
					}
					else
						AfxMessageBox("未得到任何信息!");
					pRs->Close();
				}
				pDb->Close();
			}
			delete pDb;
		}
		catch(CADOException)
		{
		}
	}
	
}

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

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

⌨️ 快捷键说明

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