急求考勤中的加班模块解决方案
xhai 2003-08-27 10:11:08 关于加班考勤记录的解决方案:
如果临时决定需要加班的,不必对当天方案进行修改,只需要照常登记。并且记录登记时间。对于此种方式的考勤记录,应该在月底进行考勤结果统计时,查询“额外加班表”中是否有本月的”额外加班记录”,若有”额外加班记录”则弹出提示框提醒统计人员进行统计, 否则直接进行统计。加班时间的安排可以在事后设置,也可以提前设置。
1)在此前现有的数据库中增加两个数据表: 额外加班记录登记表(T_TimeOverTime)和 额外加班方案明细表(T_TimeOverTimeDetail).具体如下:
额外加班表(T_TimeOverTime)
字段名 字段类型与长度 说明
IAttend#* tinyint(1) !null 编号
IIdx# tinyint(1) 时间段序号(外键,T_TimeOverTimeDetail)
dDateTime Datetime 加班日期
dBeginTime datetime 上班时间
dEndTime datetime 下班时间
iLMinutes Int 迟到分钟数
iEMinutes Int 早退分钟数
fHourValue float !null 合计时数
iLogIn int 标志是否已经统计过(1:已经统计,0:还未统计)
额外加班方案明细表(T_TimeOverTimeDetail)
IIdx#* tinyint(1) !null 时间段序号
iDept# int 部门编号(外键)
sStaffer# varchar(10) 职员编号(外键)
sWorkPiece varchar(20) !null 工作时段名称
dBeginTime datetime !null 上班时间
dEndTime datetime !null 下班时间
2)在额外加班方案明细表中设置加班的基本情况,(可以在加班之前进行设置,也可以在加班之后追加设置),其中可以分别按全部,部门及个人三种情况设置加班计划.
3)登记加班记录时,先进行判断额外加班方案明细表中是否已经对本此加班计划进行了设置,若是则在登记加班记录时就可以判断是否迟到,早退情况,并登记在档.否则在每次统计时则进行判断迟到,早退情况.
4)在判断上下班的情况方面,每次登记记录时先检索是这记录的”下班时间”字段是否为空,若不为空,则为上班时间,增加一新记录并且设下班时间为空;否则为下班时间,在原记录的”下班时间”字段追加此时间.
5)每次统计上班记录时,应判断”额外加班记录表”中的”统计标志(iLogIn)”,若全为1表示已经统计过加班记录.若有为0的标志存在,则应对这此标志为0的记录进行统计,并且加到统计表(T_TimeMonthlyTotal)中的此职员的”加班”字段.
提出问题:如果是事先不对加班时间进行安排先加班,到月底进行统计时再补充当时的应加班时间,怎么样才能不让读条形码时不出错.
例:张三上午加班时只读了"上班时间",而下班时忘记打卡.下午加班上班时就可能记录成上午的下班时间.如何才能不让下午的这次上班时间不出现在上午的下班时间中?