{ }
BOOL CAttStatDlg::OnInitDialog() {
CDialog::OnInitDialog();
UpdateData(); // 判断根据员工号过滤
if(m_bSeekbyperson) strFilter=\// 判断根据年月过滤 if(m_bSeekbytime) {
if(!strFilter.IsEmpty())
strFilter += \}
// 设置过滤条件 if(!strFilter.IsEmpty()) {
rs.m_strFilter=strFilter; }
// 更新列表框 UpdateList(rs);
strFilter += \CString strFilter; CAttStatSet rs;
nWidth+40);
NES); }
// 设置列表 int nWidth=100;
m_cList.InsertColumn(0, \记录编号\m_cList.InsertColumn(1, \员工号\m_cList.InsertColumn(2, \年月\
m_cList.InsertColumn(3, \正常工作时间(小时)\LVCFMT_LEFT, m_cList.InsertColumn(4, \加班时间(小时)\m_cList.InsertColumn(5, \请假时间(半天)\m_cList.InsertColumn(6, \出差时间(半天)\m_cList.InsertColumn(7, \迟到次数\m_cList.InsertColumn(8, \早退次数\m_cList.InsertColumn(9, \旷工次数\m_cList.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLI// 更新列表 CAttStatSet rs; UpdateList(rs);
return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE
void CAttStatDlg::UpdateList(CAttStatSet& rs) {
int i=0; CString str; // 清除列表框内容 m_cList.DeleteAllItems(); //显示全部数据
}
rs.Open(); while(!rs.IsEOF()) {
m_cList.InsertItem(i, \ str.Format(\ m_cList.SetItemText(i, 0, str);
m_cList.SetItemText(i, 1, rs.m_PERSON); m_cList.SetItemText(i, 2, rs.m_YEAR_MONTH); str.Format(\ m_cList.SetItemText(i, 3, str); str.Format(\ m_cList.SetItemText(i, 4, str);
str.Format(\VE_HDAY); m_cList.SetItemText(i, 5, str);
str.Format(\ m_cList.SetItemText(i, 6, str); str.Format(\ m_cList.SetItemText(i, 7, str);
str.Format(\Y_TIMES); m_cList.SetItemText(i, 8, str);
str.Format(\ m_cList.SetItemText(i, 9, str); rs.MoveNext(); i++; }
rs.Close();
void CAttStatDlg::OnStatBtnStat()
{
判断时间 度
strFileName);
CDatabase db;
db.Open(_T(\CRecordset rs_attend(&db); CRecordset rs_leave(&db); CRecordset rs_errand(&db);
CTimeSpan tp_1(1,0,0,0); // 构造一个1天的CTimeSpan CTimeSpan tp_02(0,2,0,0); // 构造一个2小时的CTimeSpan CTimeSpan TimeSpan[4]; // 保存上下班时间 int nHours[2]; // 保存上下午工作时间 CString strSTime,strETime; // 保存始末时间
CTime TimeStamp, LateTime, EarlyTime,WorkStart,WorkEnd; // 保存中间int nWorkHour,nOverHour,nLeaveHDay,nErrandHDay; // 保存时间间隔长BOOL bLate,bEarly,bAbsent,bLeave,bErrand; // 保存判断结果 int nLateTimes,nEarlyTimes,nAbsentTimes; // 保存次数 CString cstr[4]; // 暂存起始时间 char str[4][9]; // 暂存起始时间 int i,j,n; // 用于循环和计数
CString strTmp,strTmp1,strTmp2; // 临时变量 // 临时变量,年,月,日,时,分,秒 int nHour,nMinute,nSecond;
CString strFileName=\文件名
UpdateData(); // 更新数据 // 读取INI文件
GetPrivateProfileString(\\
\
str[0],
9,
GetPrivateProfileString(\strFileName);
GetPrivateProfileString(\strFileName);
GetPrivateProfileString(\strFileName); 时间 时间
for(i=0; i<4; i++) cstr[i]=str[i];
\\\
\\\
str[1], str[2], str[3],
9, 9, 9,
// 定义四个时间间隔变量并初始化为INI文件中的值 CTimeSpan *pTS; for(i=0; i<4; i++) {
sscanf(cstr[i].Left(2), \
// 得到时
sscanf(cstr[i].Mid(3,2), \// 得到分 sscanf(cstr[i].Mid(6,2), \// 得到秒 // 构造一个时间间隔变量
pTS=new CTimeSpan(0,nHour,nMinute,nSecond); TimeSpan[i]=*pTS; // 赋值 delete pTS; }
nHours[0]=(TimeSpan[1]-TimeSpan[0]).GetTotalHours(); // 计算上午工作if((TimeSpan[1]-TimeSpan[0]).GetMinutes()>30) nHours[0]++; // 四舍五入 nHours[1]=(TimeSpan[3]-TimeSpan[2]).GetTotalHours(); // 计算下午工作if((TimeSpan[3]-TimeSpan[2]).GetMinutes()>30) nHours[1]++; // 四舍五入 // 转换统计开始时间
strSTime=m_STime.Format(\// 转换统计结束时间,且天数加1
strETime=(m_ETime+tp_1).Format(\// 提取员工列表