以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于制作一个考勤审批系统  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=121498)

--  作者:linlingru
--  发布时间:2018/7/7 15:39:00
--  关于制作一个考勤审批系统

各位专家:

      有如下一个每日考勤审批需求,需要实现功能如下,烦请指教该如何实施:

     1、需要实现的目标效果图如下图(原始数据只有一个《班组人员名单》的sqlserver外部数据库表)

     2、当班组长单击一个《考勤管理》的按钮时,系统可以根据当月天数以及《班组人员名单》表自动生成上图。

     3、班组长可以填写出勤小时数,加班小时数以及加班原因后保存。

     4、保存后的信息需要保存到外部sqlserver数据库表《出勤统计》中,该表每列为:工号、姓名、班组、日期、正常出勤小时数、加班小时数、加班原因、审批人、审批日期、审批备注。

     5、主管可以对加班小时数和加班原因进行审核;审核完毕后相应单元格的加班小时数和加班原因行自动锁定,无法修改。可以选中某一行的加班小时数进行修改,也可以选中当天的一列一次性全部批准。

 

     我的思路是:

     1、循环获取该班组人员明细后,创建临时数据表,表的每一列的名称就是日期,如:2018年8月_1;

     2、对每一行,循环获取该工号人员对应日期的出勤小时数、加班小时数以及加班原因信息,若存在则取出,否则为空白;

     3、单击保存时,循环判断:若存在数据则更新,若不存在数据则执行insert插入数据库。

 

      没有想出其他方法,但是上述方法感觉对数据库的循环查询和更新量较大,速度会很慢,比如一个班组一般为50人,一个月30天,每个人循环3次分别获取正常出勤小时数,加班小时数,加班原因;然后还要先判断是否存在,然后insert或者update,这样需要50*30*3*2=15000次。

 

      还有其他更好的办法吗?谢谢各位大神指导。

    


图片点击可在新窗口打开查看此主题相关图片如下:考勤管理.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间:2018/7/7 16:02:00
--  
可以使用交叉统计表,生成类似上面的表格,然后再使用代码添加加班原因

具体的请上传实例测试