关于考勤排班问题求解

2004v2004 2007-10-21 09:04:19
.“周期天数”是指该部门所上班次的“上班”和“休息”的规律,例如:某个班次是上5天,休息2 天,其“周期天数”为 7 天。另一个三班制的班,上3天,休息1天,其“周期天数”为 4 天。

3.“休息日”是指按规律,第几天是休息日。仍如上例:上 5 天,休2 天,周期为7天,“休息日”是第6天,第7天, 在“休自日”里输入“6,7”,以“逗号”分隔;而三班制的,上3天,休 1 天,第 4 天休息,则在“休息日”里输入“4”。

这样的怎么计算出  就某个人的 排班表呢  谢谢了
...全文
123 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
polly_110 2007-10-22
  • 打赏
  • 举报
回复
曾经见过有个考勤软件是这样处理的.
假设有五十个员工,分为三个班组:A班,B班,C班
A班工作三天休息一天, B班工作五天休息两天,C班工作十天休息三天.

第一步,录入员工信息,
第二步,录入班组信息(即三个班组,A,B,C, 同时录入他们的开如执行日期及结束日期,工作时间,休息时间)
班组名, 开始时间, 结束时间, 工作日期,休息日期
A 2007-1-1 2009-1-1 3 1
B 2007-2-1 2009-1-1 5 2
C 2007-2-1 2009-1-1 10 3

根据这两张表,你就可以得出,每个员工,任意一天是休息,还是工作(注意开始日期,是周期的开始)..

还有一个表,就那就是每个班组的上下班时间表,
根据这个表,这就可以知道每个员工,每一天打的考勤是迟到,早退还是无效记录....

再加班员工每天的打卡记录表,基本上的表结构就是这样子的.
2004v2004 2007-10-22
  • 打赏
  • 举报
回复
哪个哥们有好的建议
love985 2007-10-21
  • 打赏
  • 举报
回复
这个要有个起始时间,可专设个起始时间表,然后下列主表计算

班次 某人编号 上班 休息 周期 上班时间 休息时间
1 ... 5 2 7 2007.10.21-2007.10.25 2007.10.21-2007.10.26
2 上次的休息时间加上班天数 上班时间+休息天数
3 .
4 .

不知道有没有理解错误!是不是LZ要的?
喝口水 2007-10-21
  • 打赏
  • 举报
回复
给你个思路:
利用DaySpan函数计算出某一天距离开始上班的天数,然后求模运算,即可得这一天他是上的什么班
例如某个人2006年1月8日上班,他的上班周期为7,我们要求他2007年10月21日该上那个班,那我们利用DaySpan函数
求得天数为
procedure TForm1.Button1Click(Sender: TObject);
var
daynum:double;
a,b:TDate;
begin
a:=strtodate('2006-1-8');
b:=strtodate('2007-10-21');
daynum:=DaySpan(a,b);
showmessage('2006-1-8'+'到'+'2007-10-21'+'共有'+floattostr(daynum)+'天');
end;
求得共有651天,那么651模7得
procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage(inttostr(651 mod 7));
end;
得0;
即为第7天,所以他这一天为休息日

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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