我正在做考勤软件,可以找我讨论讨论.
其实,每个员工都有一个出勤班组,根据班组找出符合应该打卡的时间,将不符合的数据报告给用户,交由用户处理,当然,迟到等要设一个限值,就是说迟到多少分钟计入当次考勤,如超过,则该次考勤为异常等.
[email protected]

解决方案 »

  1.   

    hzlan(hzlan):很感谢你的关注,祝愿我们成为朋友。
    “其实,每个员工都有一个出勤班组,根据班组找出符合应该打卡的时间,将不符合的数据报告给用户,交由用户处理”
    事实上我在这里提问的目的就是希望能解决问题后,我的考勤统计报表打出来,不需要
    再交由用户处理,而是一张完整的考勤报表。包括迟到、早退时间累计。“他10:00后上班,那肯定就有8:00-10:00的请假单,将10:00这次打卡记录录入到请假单中,计算出勤时间时,检测08:00这个上班时间时,先检测是不是在请假区间(08:00-10:00)内,如有请假,则设08:00上班为正常,再在出勤时间8个钟里-2个钟请假时间为他的出勤时间.”
    至于你所说的这一点,我这里这种情况,是没有请假的,而是单纯迟到,交由计算机处理,
    针对请假我有另外的补签机制,这个我已经解决。
    MY E_mail:  [email protected]
      
      

  2.   

    hzlan(hzlan):
    多打卡的数据过滤掉就行了,对于加班的时间则在正常考勤时间外处理。
      

  3.   

    跨天班不太常见,所以没必要了(我考勤针对的对象似乎都不需要,都是坐办公室的)。
    其实跨天班也不太难做,只要事先获得该班种该天和前天是否属于跨天班再加处理(是否去掉第一条记录和是否加入第二天第一条记录)就可以了。
    我的算法比你还笨,相信慢多了,但不这样,怎么知道员工是否是缺勤还是正常休息呢?
    或者先用一两条SQL语句把正常休息的员工打上标记,然后剩下的员工再处理,呵呵,这个主意似乎还不赖
      

  4.   

    把制度单做到一个表里。结构为ID  |  Name |  Order |  ArriveTime  |  LeftTime  | TwoDay |  Flexible |
    每个人有每个人的制度,或是倒班,或是跨天,或是弹性。在每名员工的状况表里
    存放开始上班的日期,没有倒班的Order为1,有倒班的就自动给Order+1,
    这样就可以算出每名员工每天是什么班以及当天的班次!每天的合理刷卡时间在ArriveTime和LeftTime两端各延长两个小时,
    弹性班可适当增加到四个小时。不是跨天班的,干活干得跨天了不管。一时间点内多次打卡,间隔在半小时内的算一次,半小时外的算多次。
    不论几点,第一次为来时卡,第二次为离开卡,第三次视做再次来的卡,以此类推。
    工时按照离开时间-来的时间计算,如果有多个时间段,计算他们的和。
    出现单数次有效记录的为非正常状况,需要假单。
      

  5.   

    当然还没有这么简单,我的存储过程在月底时需要算20个小时才能算完!
    SQL Server7.0, PII550 + 512M IBM Aptiva... :(
      

  6.   

    可行算法是要考虑运行速度的,估计太复杂的考勤算法没必要,还不如让工作人员自己弄呢
    to bisc_sunny(中子):考勤人员有多少人?问什么这么慢?因为数据库太大吗?你可以定期把数据移到历史库,或者考勤计算时,建个临时库,完成后然后再导入记录库。
      

  7.   

    to bisc_sunny(中子) zcfgarfield(加菲) 
    为什么这么慢啊,我现在2000多人,计算一个月的记录也才1个多钟,一天打六次卡,请假出差的另算.
    我现在的做法是每个员工每个月都有自已的班组库,就是已经知道它哪天上什么班次,因为有00:00到08:00的班,还有20:00到08:00的班,这些都需要跨天的计算,用卡号和日期不能设主从关系,只能卡号一个字段作关联。
    这样打卡记录与日出勤表的关联就要到程式中去判断,所以速度就慢。
      

  8.   

    lianghu(山人) ,
    怎么不说话啦,你这个帖子可能会成为考勤系统讨论的一个中心噢!
      

  9.   

    lianghu(山人):
    很抱歉,我昨天下午有事情出去了,没来这里看看,没想到来这么多人讨论,在此,在下感谢热心的诸位。
      

  10.   

     zhuoyuesky(卓越) 回复于2001-11-13 11:51:40   
    可以在打卡时间上做判断,比如在一分钟内打两次打只算一次。 
       我也曾考虑这样做,但是我采用的是指纹考勤,打卡运算对CPU开销很大,
    这样的话,我要在每次打卡时再同数据库中的数据进行一次比较,
    这样打卡反应时间太长,效率太低,在上下班人员集中的高峰期,
    如此处理肯定不行。
      

  11.   

    hzlan(^只有你能帮到我)
    我是先生成员工日出勤报表的员工卡号,班组号,出勤日期字段资料,
    然后根据去打卡库中找出相对应的资料,填入对应的出勤时间里,再来计算.
    不过就是如果打卡库中只有一条记录时,而员工有2000人,这样也要循环2000次,不好,有没有更好的意见...  
    对于你这个问题,我大约和你是采用的类似的方法,我将考勤规则相同的所有人分批将其打卡记录提出来,再将对应记录写入到对应时次中,不过我好像没有采用循环,全部是条件批处理。
      

  12.   

    lianghu(山人) ,
    我采用的是非接触式感应卡钟,员工打卡时也是打很多次,不过我是在将数据收上来以后再用SQL过滤的,如08:00,08:01,08:02,09:00
    我就只要08:00和09:00两条记录,这样在打卡的时候我就不用去算他是不是重复打卡。
    还有你们请假单不用算是否有超时现象吗?如9:00-10:00请假,实际上他是08:57分出去,而10:05回来的怎么办。
    对于一下请假好多天的是分多条输入还是只有一条请假记录呢?
    如果是一条,如2001/11/1 10:00-2001/11/5 12:00我怎样去算是否有超时呢,因为有些请假出去如09:00-10:00,而有些是09:00-12:00
    09:00-10:00的两次卡都要打,而09:00-12:00只要打09:00这一次。
      

  13.   

    lianghu(山人),
    当库中只有一条打卡记录时,其实你也是扫描了全部员工记录的,只是无对应记录的就没有写入时间这个过程而已,你说是不是。
      

  14.   

    hzlan(^只有你能帮到我^):
    对于请假我没有考虑超时,我的请假只考虑以天为单位来计算,倒没象你这么细致,
    至于请多天假,我只有一条请假记录。
      

  15.   

    lianghu(山人):
    你不是做工厂的考勤吧,做事业、公司的考勤好做多了,考虑的问题要少一些。
      

  16.   

     hzlan(^只有你能帮到我^) :
    对了!
      

  17.   

     bisc_sunny(中子) 
    当然还没有这么简单,我的存储过程在月底时需要算20个小时才能算完!
    SQL Server7.0, PII550 + 512M IBM Aptiva... :(  
    有这么夸张吗,我用ACCESS,PII300,64M那岂不是要死翘翘!!
      

  18.   

    后端用ACCESS太不安全啦.
    你们是月底一次处理吗,如果是这样的话,我怎么查到我有没有打错卡或漏打卡.
    如果是一天或几天处理一次,以后要修改班次什么的,全部判断都是错的要重来怎么办.
      

  19.   

    hzlan(^只有你能帮到我^):
    开始我想用SQL,我也觉着ACCESS不安全,可是老板要降成本。
    我的数据在月底集中处理。