如果你用的是中控考勤机且考勤机能联网,那恭喜有福了! 最近发现考勤机提供web方式查询,经过调试可以用程序直接读取考勤机数据跨过考勤机软件及其access数据库,数据同步及时性、可靠性大幅提高。
通达oa2011已经支持 指纹考勤机 但只限中控iclock660 这款2000大洋的型号,通过本文的开发接口,可以与任意一款指纹机集成, 需求指纹机管理软件能实时保存数据;
我这里用的是 中控u160 指纹考勤机, 这款机器支持WIFI ,可以实现实时传输考勤数据,这也就意味着,用户采集指纹马上就能够在自己的OA上看到自己的考勤数据;
特别指出的一点是这款机器的中控u160WIFI配置 容易出错的是 网线连接的ip网段 设置192.168.3.x,WIFI ip网段是在192.168.1.x ,这样才能保证成功, 大多数都是错在这里
之前博文里提到的使用PHP同步 ACCESS与mysql数据库的方式,有些缺点由于php是被动执行的脚步,我们只能够定时重复执行的方式来实现,确实不方便;
来说下新方案:
1, 首先我们仍使用中控提供的考勤软件 ATT2008或称为zktime5.0 ,考勤机光盘附带的标准版,一般都有, 这里我们不再使用access而使用MSSQl数据库,安装目录下有一文件 mssql.sql ,放在sqlserver企业管理器中执行,就创建好要使用的数据库及表了,我们命名数据库为 Att2008;
2,打开 表checkinout , 添加自增字段 id (这里严重鄙视一下!。。 ),修改通达oa数据库 attend_duty 增加 outID字段
3,使用sql企业管理器创建作业任务名为:update_TDOA ,作业计划选择每天 ,作业步骤 添加以下脚本:
1 use att2008 2 declare @num int, 3 <span> </span>@sqls nvarchar(4000), 4 <span> </span>@con varchar(200), 5 <span> </span>@startID int, 6 <span> </span>@attend_duty varchar(300) 7 set @startID=0 8 --需先安装MySQL ODBC 3.51驱动 9 set @con=\'OPENROWSET(\'\'MSDASQL\'\',\'\'DRIVER={MySQL ODBC 3.51 Driver};SERVER=127.0.0.1;PORT=3336;DATABASE=td_oa;USER=root;PASSWORD=myoa888;STMT=set names gb2312;OPTION=2049\'\',\' 10 set @attend_duty=@con+\'\'\'select * from ATTEND_DUTY;\'\')\' 11 set @sqls=\'SELECT @a=outid FROM \'+@con+\'\'\'select outid from attend_duty order by id desc limit 1;\'\')\' 12 exec(\'delete \'+@con+\'\'\'select * from attend_duty\'\') where register_type=2 and CONVERT(varchar(12) , register_time, 112 )= 13 (select top 1 CONVERT(varchar(12) ,CHECKTIME, 112 ) from CHECKINOUT order by CHECKTIME desc) 14 \') 15 exec sp_executesql @sqls,N\'@a int output\',@startID output 16 print @startID 17 exec(\'insert \'+@con+\'\'\'select * from ATTEND_DUTY\'\') (outid,USER_ID,REGISTER_TYPE,REGISTER_TIME,REGISTER_IP,type) 18 SELECT top 500 C.id,case when A.user_id is not null then A.user_id else \'\'0\'\' end,