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