📄 dlgeditcheck.cpp
字号:
// dlgEditCheck.cpp : implementation file
//
#include "stdafx.h"
#include "CheckIn.h"
#include "dlgEditCheck.h"
#include "CheckRecordset.h"
#include "EmployeeRecordset.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CdlgEditCheck dialog
CdlgEditCheck::CdlgEditCheck(CWnd* pParent /*=NULL*/)
: CDialog(CdlgEditCheck::IDD, pParent)
{
//{{AFX_DATA_INIT(CdlgEditCheck)
m_iDay = 0;
m_strEmpId = _T("");
m_iMonth = 0;
m_iYear = 0;
//}}AFX_DATA_INIT
}
void CdlgEditCheck::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CdlgEditCheck)
DDX_Control(pDX, IDC_LIST, m_CheckList);
DDX_Control(pDX, IDC_COMBO, m_CheckCom);
DDX_Text(pDX, IDC_EDIT_DAY, m_iDay);
DDX_Text(pDX, IDC_EDIT_EMPID, m_strEmpId);
DDX_Text(pDX, IDC_EDIT_MONTH, m_iMonth);
DDX_Text(pDX, IDC_EDIT_YEAR, m_iYear);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CdlgEditCheck, CDialog)
//{{AFX_MSG_MAP(CdlgEditCheck)
ON_BN_CLICKED(IDC_OK, OnMyClose)
ON_BN_CLICKED(IDC_SEE, OnSee)
ON_BN_CLICKED(IDC_EDIT, OnEdit)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CdlgEditCheck message handlers
void CdlgEditCheck::OnOK()
{
// TODO: Add extra validation here
// CDialog::OnOK();
}
void CdlgEditCheck::OnMyClose()
{
// TODO: Add your control notification handler code here
CDialog::OnOK();
}
void CdlgEditCheck::OnSee()
{
// TODO: Add your control notification handler code here
this->UpdateData(true);
CEdit *pEditYear,*pEditMonth,*pEditDay;
pEditYear = (CEdit*)this->GetDlgItem(IDC_EDIT_YEAR);
pEditMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_MONTH);
pEditDay = (CEdit*)this->GetDlgItem(IDC_EDIT_DAY);
CString strY,strM,strD;
pEditYear->GetWindowText(strY);
pEditMonth->GetWindowText(strM);
pEditDay->GetWindowText(strD);
/*首先应判断输入的合法性*/
/*员工号必须输入,日期的年月日必须输入而且必须是数字*/
/*必须是数字的判断留给读者完成*/
if ((strY == "") && (strM == "")&&(strD == ""))
{
MessageBox("日期必须输入!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
char year[10],month[10],day[10];
sprintf(year,"%d",this->m_iYear);
sprintf(month,"%d",this->m_iMonth);
sprintf(day,"%d",this->m_iDay);
if (this->m_strEmpId=="")
{
MessageBox("必须输入员工号!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
CCheckRecordset rsCheck;
CEmployeeRecordset rsEmployee;
try
{
if(rsCheck.IsOpen())
{
rsCheck.Close();
}
rsCheck.Open(CRecordset::dynaset,_T("select * from tbCheckIn where EmployeeID = '"+this->m_strEmpId+"'"));
if (rsCheck.IsBOF())
{
MessageBox("没有符合条件的出勤信息!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
else
{
rsCheck.MoveFirst();
while(!rsCheck.IsEOF())
{
if ((rsCheck.m_CheckInTime.GetYear() == this->m_iYear) && (rsCheck.m_CheckInTime.GetMonth()== m_iMonth) && (rsCheck.m_CheckInTime.GetDay() == m_iDay))
{
switch (rsCheck.m_State)
{
case 1:
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 正常");
break;
case 2:
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 迟到");
break;
case 3:
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 出差");
break;
case 4:
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 事假");
break;
case 5:
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 病假");
break;
case 6:
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 调休");
break;
}
rsCheck.Close();
return;
}
rsCheck.MoveNext();
}
if (rsCheck.IsOpen())
rsCheck.Close();
}
}
catch(CDBException &e)
{
MessageBox(e.m_strError,"提示",MB_ICONINFORMATION|MB_OK);
}
}
BOOL CdlgEditCheck::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
this->m_CheckList.AddString("员工号 员工姓名 签到时间 结果");
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CdlgEditCheck::OnEdit()
{
// TODO: Add your control notification handler code here
/*在修改之前,同样需要检查是否输入了要修改的员工号以及日期*/
/*修改某条记录,首先需要定位到被修改的记录上*/
/*给记录的字段赋予新的值,并更新ListBox中的显示*/
this->UpdateData(true);
CEdit *pEditYear,*pEditMonth,*pEditDay;
pEditYear = (CEdit*)this->GetDlgItem(IDC_EDIT_YEAR);
pEditMonth = (CEdit*)this->GetDlgItem(IDC_EDIT_MONTH);
pEditDay = (CEdit*)this->GetDlgItem(IDC_EDIT_DAY);
CString strY,strM,strD;
pEditYear->GetWindowText(strY);
pEditMonth->GetWindowText(strM);
pEditDay->GetWindowText(strD);
/*首先应判断输入的合法性*/
/*员工号必须输入,日期的年月日必须输入而且必须是数字*/
/*必须是数字的判断留给读者完成*/
if ((strY == "") && (strM == "")&&(strD == ""))
{
MessageBox("日期必须输入!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
char year[10],month[10],day[10];
sprintf(year,"%d",this->m_iYear);
sprintf(month,"%d",this->m_iMonth);
sprintf(day,"%d",this->m_iDay);
if (this->m_strEmpId=="")
{
MessageBox("必须输入员工号!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
CString strState;
this->m_CheckCom.GetWindowText(strState);
if (strState == "")
{
MessageBox("必须选择新的出勤值!","提示",MB_ICONINFORMATION|MB_OK);
return;
}
CCheckRecordset rsCheck;
CEmployeeRecordset rsEmployee;
try
{
if(rsCheck.IsOpen())
{
rsCheck.Close();
}
rsCheck.Open(CRecordset::dynaset,_T("select * from tbCheckIn where EmployeeID = '"+this->m_strEmpId+"'"));
if (rsCheck.IsBOF())
{
MessageBox("没有此员工","提示",MB_ICONINFORMATION|MB_OK);
//对于没有签到的员工,补上的记录中时间为23:59分
return;
}
else
{
rsCheck.MoveFirst();
while(!rsCheck.IsEOF())
{
if ((rsCheck.m_CheckInTime.GetYear() == this->m_iYear) && (rsCheck.m_CheckInTime.GetMonth()== m_iMonth) && (rsCheck.m_CheckInTime.GetDay() == m_iDay))
{
rsCheck.Edit();
if(strState == "正常")
{
rsCheck.m_State = 1;
m_CheckList.DeleteString(1);
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 正常");
}
if(strState == "迟到")
{
rsCheck.m_State = 2;
m_CheckList.DeleteString(1);
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 迟到");
break;
}
if(strState == "出差")
{
rsCheck.m_State = 3;
m_CheckList.DeleteString(1);
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 出差");
}
if(strState == "事假")
{
rsCheck.m_State = 4;
m_CheckList.DeleteString(1);
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 事假");
}
if(strState == "病假")
{
rsCheck.m_State = 5;
m_CheckList.DeleteString(1);
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 病假");
}
if(strState == "调休")
{
rsCheck.m_State = 6;
m_CheckList.DeleteString(1);
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 调休");
}
rsCheck.Update();
rsCheck.Close();
return;
}
rsCheck.MoveNext();
}
//直到最后也没有找到这个员工当天的出勤记录,那么应该补上这天的出勤
rsCheck.AddNew();
rsCheck.m_EmployeeID = this->m_strEmpId ;
rsCheck.m_CheckInTime = CTime(this->m_iYear,this->m_iMonth,this->m_iDay,23,59,0);
if(strState == "正常")
{
rsCheck.m_State = 1;
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 正常");
}
if(strState == "迟到")
{
rsCheck.m_State = 2;
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 迟到");
}
if(strState == "出差")
{
rsCheck.m_State = 3;
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 出差");
}
if(strState == "事假")
{
rsCheck.m_State = 4;
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 事假");
}
if(strState == "病假")
{
rsCheck.m_State = 5;
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 病假");
}
if(strState == "调休")
{
rsCheck.m_State = 6;
m_CheckList.AddString(rsCheck.m_EmployeeID+" "+year+"年"+month+"月"+day+"日 调休");
}
rsCheck.Update();
if (rsCheck.IsOpen())
rsCheck.Close();
}
}
catch(CDBException &e)
{
MessageBox(e.m_strError,"提示",MB_ICONINFORMATION|MB_OK);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -