📄 dlgquerycheck.cpp
字号:
// dlgQueryCheck.cpp : implementation file
//
#include "stdafx.h"
#include "CheckIn.h"
#include "dlgQueryCheck.h"
#include "CheckRecordset.h"
#include "EmployeeRecordset.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CdlgQueryCheck dialog
CdlgQueryCheck::CdlgQueryCheck(CWnd* pParent /*=NULL*/)
: CDialog(CdlgQueryCheck::IDD, pParent)
{
//{{AFX_DATA_INIT(CdlgQueryCheck)
m_strEmpId = _T("");
m_iBeginDay = 0;
m_iBeginMonth = 0;
m_iBeginYear = 0;
m_iEndDay = 0;
m_iEndMonth = 0;
m_iEndYear = 0;
//}}AFX_DATA_INIT
}
void CdlgQueryCheck::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CdlgQueryCheck)
DDX_Control(pDX, IDC_LIST_CHECK, m_ListBox);
DDX_Text(pDX, IDC_EDIT_EMPID, m_strEmpId);
DDX_Text(pDX, IDC_EDIT_BEGIN_DAY, m_iBeginDay);
DDX_Text(pDX, IDC_EDIT_BEGIN_MONTH, m_iBeginMonth);
DDX_Text(pDX, IDC_EDIT_BEGIN_YEAR, m_iBeginYear);
DDX_Text(pDX, IDC_EDIT_END_DAY, m_iEndDay);
DDX_Text(pDX, IDC_EDIT_END_MONTH, m_iEndMonth);
DDX_Text(pDX, IDC_EDIT_END_YEAR, m_iEndYear);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CdlgQueryCheck, CDialog)
//{{AFX_MSG_MAP(CdlgQueryCheck)
ON_BN_CLICKED(IDC_OK, OnMyClose)
ON_BN_CLICKED(IDC_BUTTON_QUERY, OnButtonQuery)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CdlgQueryCheck message handlers
void CdlgQueryCheck::OnOK()
{
// TODO: Add extra validation here
//CDialog::OnOK();
}
void CdlgQueryCheck::OnMyClose()
{
// TODO: Add your control notification handler code here
EndDialog(10);
//CDialog::OnOK();
}
void CdlgQueryCheck::OnButtonQuery()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
/*首先判断输入的条件是否合法*/
/*我们这里要求员工号必须输入*/
/*起始时间和结束时间全部输入*/
if (this->m_strEmpId == "")
{
MessageBox("必须输入员工号!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
/*应该判断输入的是否为空,是否为数字*/
CEdit *pBeginYear = (CEdit*)this->GetDlgItem(IDC_EDIT_BEGIN_YEAR);
CEdit *pBeginMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_BEGIN_MONTH);
CEdit *pBeginDay = (CEdit*)this->GetDlgItem(IDC_EDIT_BEGIN_DAY);
CEdit *pEndYear = (CEdit*)this->GetDlgItem(IDC_EDIT_END_YEAR);
CEdit *pEndMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_END_MONTH);
CEdit *pEndDay = (CEdit*)this->GetDlgItem(IDC_EDIT_END_DAY);
char strBeginYear[10];
char strBeginMonth[10];
char strBeginDay[10];
char strEndYear[10];
char strEndMonth[10];
char strEndDay[10];
CString BeginY,BeginM,BeginD,EndY,EndM,EndD;
pBeginYear->GetWindowText(BeginY);
pBeginMonth->GetWindowText(BeginM);
pBeginDay->GetWindowText(BeginD);
pEndYear->GetWindowText(EndY);
pEndMonth->GetWindowText(EndM);
pEndDay->GetWindowText(EndD);
if ((BeginY == "")||(BeginM == "")||(BeginD=="")||
(EndY == "") || (EndM=="")||(EndD == ""))
{
MessageBox("起始时间和结束时间必须输入!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
/*这里还应该判断是否为数字*/
/*留作读者自己完成*/
sprintf(strBeginYear,"%d",m_iBeginYear);
sprintf(strBeginMonth,"%d",m_iBeginMonth);
sprintf(strBeginDay,"%d",m_iBeginDay);
sprintf(strEndYear,"%d",m_iEndYear);
sprintf(strEndMonth,"%d",m_iEndMonth);
sprintf(strEndDay,"%d",m_iEndDay);
CTime BeginTime = CTime(m_iBeginYear,m_iBeginMonth,m_iBeginDay,0,0,0);
CTime EndTime = CTime(m_iEndYear,m_iEndMonth,m_iEndDay,24,59,59);
CTimeSpan span = EndTime - BeginTime;
/*应该判断输入的起始时间是否早于结束时间*/
if (span<0)
{
MessageBox("起始时间应早于结束时间!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
CString strSql;
//strSql = _T("select * from tbCheckIn where EmployeeID = '"+this->m_strEmpId+"' and CheckInTime >= '"+BeginTime+"' and CheckInTime <= '"+EndTime+"'");
strSql = _T("select * from tbCheckIn where EmployeeID = '"+this->m_strEmpId+"'");
CCheckRecordset rsCheck;
CEmployeeRecordset rsEmployee;
try
{
if(rsCheck.IsOpen())
{
rsCheck.Close();
}
//首先得到这个员工的所有出勤记录,由于时间字段的复杂性
rsCheck.Open(CRecordset::dynaset,strSql);
//从这个员工的出勤记录中取得符合这个时间段的记录
if (rsCheck.IsBOF())
{
MessageBox("没有符合条件的出勤信息!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
else
{
rsCheck.MoveFirst();
while(!rsCheck.IsEOF())
{
if ((rsCheck.m_CheckInTime >= BeginTime) && (rsCheck.m_CheckInTime <= EndTime))
{
//出勤时间在查询的时间段内,将信息显示在ListBox中
//员工号 员工姓名 签到时间 结果
char strYear[10],strMonth[10],strDay[10],strHour[10],strMinute[10];
sprintf(strYear,"%d",rsCheck.m_CheckInTime.GetYear());
sprintf(strMonth,"%d",rsCheck.m_CheckInTime.GetMonth());
sprintf(strDay,"%d",rsCheck.m_CheckInTime.GetDay());
sprintf(strHour,"%d",rsCheck.m_CheckInTime.GetHour());
sprintf(strMinute,"%d",rsCheck.m_CheckInTime.GetMinute());
switch(rsCheck.m_State)
{
case 1:
this->m_ListBox.AddString(rsCheck.m_EmployeeID+" "+rsEmployee.GetEmployeeName(rsCheck.m_EmployeeID)+" "
+strYear+"年"+strMonth+"月"+strDay+"日"+strHour+"时"+strMinute+"分"+" 正常");
break;
case 2:
this->m_ListBox.AddString(rsCheck.m_EmployeeID+" "+rsEmployee.GetEmployeeName(rsCheck.m_EmployeeID)+" "
+strYear+"年"+strMonth+"月"+strDay+"日"+strHour+"时"+strMinute+"分"+" 迟到");
break;
case 3:
this->m_ListBox.AddString(rsCheck.m_EmployeeID+" "+rsEmployee.GetEmployeeName(rsCheck.m_EmployeeID)+" "
+strYear+"年"+strMonth+"月"+strDay+"日"+strHour+"时"+strMinute+"分"+" 出差");
break;
case 4:
this->m_ListBox.AddString(rsCheck.m_EmployeeID+" "+rsEmployee.GetEmployeeName(rsCheck.m_EmployeeID)+" "
+strYear+"年"+strMonth+"月"+strDay+"日"+strHour+"时"+strMinute+"分"+" 事假");
break;
case 5:
this->m_ListBox.AddString(rsCheck.m_EmployeeID+" "+rsEmployee.GetEmployeeName(rsCheck.m_EmployeeID)+" "
+strYear+"年"+strMonth+"月"+strDay+"日"+strHour+"时"+strMinute+"分"+" 病假");
break;
case 6:
this->m_ListBox.AddString(rsCheck.m_EmployeeID+" "+rsEmployee.GetEmployeeName(rsCheck.m_EmployeeID)+" "
+strYear+"年"+strMonth+"月"+strDay+"日"+strHour+"时"+strMinute+"分"+" 调休");
break;
}
}
rsCheck.MoveNext();
}
}
}
catch(CDBException &e)
{
//MessageBox("可能输入的数据不合理,起始时间和结束时间必须为数字!","提示",MB_ICONINFORMATION|MB_OK);
MessageBox(e.m_strError,"提示",MB_ICONINFORMATION|MB_OK);
}
}
BOOL CdlgQueryCheck::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
this->m_ListBox.AddString("员工号 员工姓名 签到时间 结果");
CEdit *pBeginYear = (CEdit*)this->GetDlgItem(IDC_EDIT_BEGIN_YEAR);
CEdit *pBeginMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_BEGIN_MONTH);
CEdit *pBeginDay = (CEdit*)this->GetDlgItem(IDC_EDIT_BEGIN_DAY);
CEdit *pEndYear = (CEdit*)this->GetDlgItem(IDC_EDIT_END_YEAR);
CEdit *pEndMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_END_MONTH);
CEdit *pEndDay = (CEdit*)this->GetDlgItem(IDC_EDIT_END_DAY);
pBeginYear->SetWindowText("");
pBeginMonth->SetWindowText("");
pBeginDay->SetWindowText("");
pEndYear->SetWindowText("");
pEndMonth->SetWindowText("");
pEndDay->SetWindowText("");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -