&&&&&&&&&&&源码源码,请进...

hzlan 2001-11-13 01:47:44
表1:
卡号 打卡时间
1 2001/11/1 08:00
1 2001/11/1 12:00
2 2001/11/1 07:59
2 2001/11/1 12:03
3 2001/11/1 20:00
3 2001/11/2 08:00
............
表2:
计工资日期 卡号 班组 打卡时间1 打卡时间2 打卡时间3 打卡时间4
2001/11/1 1 白班 08:00 12:00
2001/11/1 2 白班 07:59 12:03
2001/11/1 3 晚班 20:00 08:00
.........

如何由表1和班组库得出表2.
表2中,员工3虽然打卡时间为2001/11/2 08:00为2号,但计算工资时应计入2001/11/1号.

求解答,送分
...全文
76 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zcfgarfield 2001-11-13
  • 打赏
  • 举报
回复
我的算法(前提:班种固定,一个白班,一个晚班,统计范围不超过一个月,动态数组太麻烦):
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;
hzlan 2001-11-13
  • 打赏
  • 举报
回复
先给你分先.
hzlan 2001-11-13
  • 打赏
  • 举报
回复
to:zcfgarfield(加菲) 
我是已知员工的班组,需要根据班组来确定将打卡的时间写入到表2中.因为第二天的打卡时间有可能要将他计算到先一天的出勤.
sillyou 2001-11-13
  • 打赏
  • 举报
回复
关注。
cobi 2001-11-13
  • 打赏
  • 举报
回复
重点关注
zcfgarfield 2001-11-13
  • 打赏
  • 举报
回复
很好弄啊.
首先表1按卡号,时间排序,一天一查询,对每组卡号添加入表2,计工资日期=第一条日期,卡号=卡号,班组=(if 第一条时间在17:30以前(自己定义晚上时间)then 班组为‘白班 ’ else 为‘晚班’) ,打卡时间1 =第一条时间,打卡时间2 =第一条时间2,...
hzlan 2001-11-13
  • 打赏
  • 举报
回复
请帮忙解答.感谢...........

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧