1.我正在做一个考勤系统,到加班部分,也就是说如果从晚上18:00加班到第二天的14:00,这样子的话我刷卡就不知如何判断了??2.我们在刷卡的时候,都有一个有效的时间段,比如8:00上班,那么可以设置7:30至8:00之间的这段时间刷卡有效!下班也一样!
但是如果是下午17:30下班,晚上18:00上班,那么刷卡的时候要怎么判断到底是上班呢?还是下班?有没有什么比较好的解法?3.考勤系统统计时,速度很慢,有没有什么好的优化建议??因为急着投入使用,关系到饭碗问题,所以请各位兄弟们帮帮忙!在此先谢了!

解决方案 »

  1.   

    我做考勤程序时也遇到过这个问题,我用的是日期即yy-mm-dd-time,因为我遇到过这种情况,当月的最后一天,有人从18:00工作到转天的(即下一个月的第一天)4:00,不知道你有没有这个问题,如果有其他好的方法解决,请指教
      

  2.   

    兄弟们,多提点建议吧!谢了!MY QQ:3433590    有时间的话,交个朋友!
      

  3.   

    关于上下班的判断:
    1 设定时段方式。就是你现在用的方式。
      * 在上班时段内同一张卡多次打卡只有最后一次有效。
      * 在下半时段内同一张卡多次达卡只有第一次有效。
        对于跨夜加班和班后加班都可以通过加班单的方式解决。加班单中列出加班起始和终止时间,时间搜索流程据此设置上下班时段。2 设置标志来标记上下班。
      如果是与门禁机结合的考勤系统,可以将进门记录为上班,出门标志为下班。
      使用普通门禁机的,可以用上班或下班两台门禁机分别打卡。根据机号来区分上下班。这种方式适合于工厂等大量人流同时上下班的场合。
      给考勤机加一个按钮。按动按钮后,进入上班或下班状态(要有显示)。保存记录时,同时保存此状态。这种方式适合于同一台考勤机所考勤的人员,使用相同的时间表。
      这些标志将省略分析过程,是数据处理大大加快。关于数据处理速度
      处理速度慢的主要原因是按天和人做两层循环。还要做许多例外判断。
      建议首先将正常情况的数据进行批处理:
    inset into yuebaobiao select cardid as kahao, cTime as shangbanshijian from timerecord, ShiftTable where cTime>=#2003-04-01# and cTime<#2003-05-01 and cTime-int(cTime)>=#7:30# and cTime-int(cTime)<=8:00 and shift='正常班' and timerecord.cardid=ShiftTable.cardidinset into yuebaobiao select cardid as kahao, cTime as xiabanshijian from timerecord, ShiftTable where cTime>=#2003-04-01# and cTime<#2003-05-01 and cTime-int(cTime)>=#17:30# and cTime-int(cTime)<=18:30 and shift='正常班' and timerecord.cardid=ShiftTable.cardid  然后再根据加班表、请假表等进行特殊情况的数据处理。
      

  4.   

    TO of123:
       谢谢你的帮助,我还有一个不明之处,就是如果我采用第一种方法的话,那么我要如何去判断上班与下班时,刷卡记录的第一次与最后一次呢?