pageotmanage.cpp
来自「人事管理系统」· C++ 代码 · 共 338 行
CPP
338 行
// PageOTManage.cpp : implementation file
//
#include "stdafx.h"
#include "personelmanage.h"
#include "PageOTManage.h"
#include "SelDeptDlg.h"
#include "QueryEmpDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPageOTManage property page
IMPLEMENT_DYNCREATE(CPageOTManage, CResizablePage)
CPageOTManage::CPageOTManage() : CResizablePage(CPageOTManage::IDD)
{
//{{AFX_DATA_INIT(CPageOTManage)
// 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;
}
CPageOTManage::~CPageOTManage()
{
}
void CPageOTManage::DoDataExchange(CDataExchange* pDX)
{
CResizablePage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPageOTManage)
DDX_Control(pDX, IDC_LIST_OT, m_ctrlOT);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPageOTManage, CResizablePage)
//{{AFX_MSG_MAP(CPageOTManage)
ON_BN_CLICKED(IDC_BUTTON_QUERYBYDEPT, OnButtonQuerybydept)
ON_BN_CLICKED(IDC_BUTTON_QUERYBYEMP, OnButtonQuerybyemp)
ON_BN_CLICKED(IDC_BUTTON_SHOWALL, OnButtonShowall)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPageOTManage message handlers
BOOL CPageOTManage::OnInitDialog()
{
CResizablePage::OnInitDialog();
// TODO: Add extra initialization here
AddAnchor(IDC_BUTTON_QUERYBYDEPT, TOP_LEFT);
AddAnchor(IDC_BUTTON_QUERYBYEMP, TOP_LEFT);
AddAnchor(IDC_BUTTON_SHOWALL, TOP_LEFT);
AddAnchor(IDC_LIST_OT, TOP_LEFT, BOTTOM_RIGHT);
DWORD dwStyle = m_ctrlOT.GetExtendedStyle();
dwStyle |= LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT;
m_ctrlOT.SetExtendedStyle(dwStyle);
FillOTList();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CPageOTManage::FillOTList()
{
CString strOvertimeID;
CString strEmployeeID;
CString strApproverID;
CString strSubmitTime;
CString strStartTime;
CString strEndTime;
CString strReason;
CString strStatus;
CString strType;
CString strDenyReason;
CString strHours;
CString strConnection = _T("Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=BlueHill;Data Source=dragonflylong\\sqlexpress");
CADODatabase *pDb = new CADODatabase;
pDb->SetConnectionString(strConnection);
try
{
if(pDb->Open())
{
CADORecordset *pRs = new CADORecordset(pDb);
if(pRs->Open("tblOvertime", CADORecordset::openTable))
{
DelAllColumns();
//以下添加表头
m_ctrlOT.InsertColumn(0, "OvertimeID", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(1, "EmployeeID", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(2, "ApproverID", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(3, "SubmitTime", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(4, "StartTime", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(5, "EndTime", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(6, "Reason", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(7, "Status", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(8, "Type", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(9, "DenyReason", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(10, "Hours", LVCFMT_LEFT, 64);
int cur = 0;
while(!pRs->IsEOF())
{
pRs->GetFieldValue("OvertimeID", strOvertimeID);
m_ctrlOT.InsertItem(cur, strOvertimeID);
pRs->GetFieldValue("EmployeeID", strEmployeeID);
m_ctrlOT.SetItemText(cur, 1, strEmployeeID);
pRs->GetFieldValue("ApproverID", strApproverID);
m_ctrlOT.SetItemText(cur, 2, strApproverID);
pRs->GetFieldValue("SubmitTime", strSubmitTime);
m_ctrlOT.SetItemText(cur, 3, strSubmitTime);
pRs->GetFieldValue("StartTime", strStartTime);
m_ctrlOT.SetItemText(cur, 4, strStartTime);
pRs->GetFieldValue("EndTime", strEndTime);
m_ctrlOT.SetItemText(cur, 5, strEndTime);
pRs->GetFieldValue("Reason", strReason);
m_ctrlOT.SetItemText(cur, 6, strReason);
pRs->GetFieldValue("Status", strStatus);
m_ctrlOT.SetItemText(cur, 7, strStatus);
pRs->GetFieldValue("Type", strType);
m_ctrlOT.SetItemText(cur, 8, strType);
pRs->GetFieldValue("DenyReason", strDenyReason);
m_ctrlOT.SetItemText(cur, 9, strDenyReason);
pRs->GetFieldValue("Hours", strHours);
m_ctrlOT.SetItemText(cur, 10, strHours);
cur++;
pRs->MoveNext();
}
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
}
void CPageOTManage::DelAllColumns()
{
m_ctrlOT.DeleteAllItems();
for(int i = 0, j = m_ctrlOT.GetHeaderCtrl()->GetItemCount(); i < j; i++)
m_ctrlOT.DeleteColumn(0);
}
void CPageOTManage::OnButtonQuerybydept()
{
// TODO: Add your control notification handler code here
CSelDeptDlg selDept;
if(selDept.DoModal() == IDOK)
{
CString strOvertimeID, strName, strSubmitTime, strReason, strStatus, strDescription;
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, "spwinOTbyGroup", CADOCommand::typeCmdStoredProc);
pCmd.AddParameter(&pInDeptID);
if(pRs->Execute(&pCmd))
{
if(pRs->GetRecordCount() > 0)
{
DelAllColumns();
m_ctrlOT.InsertColumn(0, "加班编号", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(1, "员工姓名", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(2, "提交时间", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(3, "原因", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(4, "状态", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(5, "描述", LVCFMT_LEFT, 128);
int cur = 0;
while(!pRs->IsEOF())
{
pRs->GetFieldValue("加班编号", strOvertimeID);
m_ctrlOT.InsertItem(cur, strOvertimeID);
pRs->GetFieldValue("员工姓名", strName);
m_ctrlOT.SetItemText(cur, 1, strName);
pRs->GetFieldValue("提交时间", strSubmitTime);
m_ctrlOT.SetItemText(cur, 2, strSubmitTime);
pRs->GetFieldValue("原因", strReason);
m_ctrlOT.SetItemText(cur, 3, strReason);
pRs->GetFieldValue("状态", strStatus);
m_ctrlOT.SetItemText(cur, 4, strStatus);
pRs->GetFieldValue("描述", strDescription);
m_ctrlOT.SetItemText(cur, 5, strDescription);
cur++;
pRs->MoveNext();
}
}
else
AfxMessageBox("未得到任何信息!");
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
}
}
void CPageOTManage::OnButtonQuerybyemp()
{
// TODO: Add your control notification handler code here
CString strName, strEmail;
long deptID;
CString strDeptID;
CString query = "SELECT o.OvertimeID, e.Name, o.SubmitTime, o.Reason, o.Status, t.Description FROM tblEmployee as e INNER JOIN tblOvertime as o ON e.EmployeeID = o.EmployeeID INNER JOIN tblOvertimeType as t ON o.Type = t.type ";
CQueryEmpDlg queryEmp;
if(queryEmp.DoModal() == IDOK)
{
strName = queryEmp.m_strName;
strEmail = queryEmp.m_strEmail;
deptID = queryEmp.m_nSelDeptID;
strDeptID.Format("%d", deptID);
//得到查询串
if(strName.GetLength() > 0)
{
query += " WHERE e.Name = '" + strName + "' ";
if(strEmail.GetLength() > 0)
query += " AND e.Email = '" + strEmail + "' ";
if(deptID != -1)
query += " AND e.DeptID = " + strDeptID;
}
else if(strEmail.GetLength() > 0)
{
query += " WHERE e.Email = '" + strEmail + "' ";
if(deptID != -1)
query += " AND e.DeptID = " + strDeptID;
}
else if(deptID != -1)
query += " WHERE e.DeptID = " + strDeptID;
////////////////////////////////////////////////////
CString strOvertimeID, strName, strSubmitTime, strReason, strStatus, strDescription;
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_ctrlOT.InsertColumn(0, "加班编号", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(1, "员工姓名", LVCFMT_LEFT, 64);
m_ctrlOT.InsertColumn(2, "提交时间", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(3, "原因", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(4, "状态", LVCFMT_LEFT, 128);
m_ctrlOT.InsertColumn(5, "描述", LVCFMT_LEFT, 128);
int cur = 0;
while(!pRs->IsEOF())
{
pRs->GetFieldValue("OvertimeID", strOvertimeID);
m_ctrlOT.InsertItem(cur, strOvertimeID);
pRs->GetFieldValue("Name", strName);
m_ctrlOT.SetItemText(cur, 1, strName);
pRs->GetFieldValue("SubmitTime", strSubmitTime);
m_ctrlOT.SetItemText(cur, 2, strSubmitTime);
pRs->GetFieldValue("Reason", strReason);
m_ctrlOT.SetItemText(cur, 3, strReason);
pRs->GetFieldValue("Status", strStatus);
m_ctrlOT.SetItemText(cur, 4, strStatus);
pRs->GetFieldValue("Description", strDescription);
m_ctrlOT.SetItemText(cur, 5, strDescription);
cur++;
pRs->MoveNext();
}
}
else
AfxMessageBox("未得到任何信息!");
pRs->Close();
}
delete pRs;
pDb->Close();
}
delete pDb;
}
catch(CADOException)
{
}
}
}
void CPageOTManage::OnButtonShowall()
{
// TODO: Add your control notification handler code here
FillOTList();
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?