很好弄啊.
首先表1按卡号,时间排序,一天一查询,对每组卡号添加入表2,计工资日期=第一条日期,卡号=卡号,班组=(if 第一条时间在17:30以前(自己定义晚上时间)then 班组为‘白班 ’ else 为‘晚班’) ,打卡时间1 =第一条时间,打卡时间2 =第一条时间2,...
首先表1按卡号,时间排序,一天一查询,对每组卡号添加入表2,计工资日期=第一条日期,卡号=卡号,班组=(if 第一条时间在17:30以前(自己定义晚上时间)then 班组为‘白班 ’ else 为‘晚班’) ,打卡时间1 =第一条时间,打卡时间2 =第一条时间2,...
我是已知员工的班组,需要根据班组来确定将打卡的时间写入到表2中.因为第二天的打卡时间有可能要将他计算到先一天的出勤.
var
WorkTimeflag : array[1..31] of boolean;//0:休息,1:日班,2:夜班
WorkTime : array[1..31,1..2] of TDateTime;//记录规定工作时间,如果固定,就不需要了,如果有多个工作时间段,可以自己改动
begin while 每一个员工 do
begin
清空WorkTimeflag,WorkTime
查询员工在统计范围内的班组情况,设置WorkTimeflag,WorkTime
while 每条员工在统计范围内的打卡记录 do
begin
排除重复刷卡(1分钟之内的多次刷卡只算一次)
根据WorkTimeflag的情况判断该条打卡记录的属于哪天的记录(当天还是昨天)
若一天的打卡记录处理完毕,则整理数据添加入库
end;
如果统计的最后一天是夜班,则获取最后一天的下一天的第一条记录,整理入库
end;
end;