遇到些不是大牌的打卡机,系统还没有相应DLL支持的时候。大家第一念头都是只能更换打卡机或是导出文本修改完 再导入吧,有没有更方法的方法让系统能够采集到打卡机数据呢?答案是有的,下面试给大家看看 首先把打卡机换到SQL数据库,不是山寨到尽点的一百来块的基本都支持SQL,具体就不行了,菜单里看看。有些考 勤软件安装的时候已经自带了阉割版的SQL,去网上下完整的装上,2000或2005,2008都可以。 接下来,SQL2000打开“SQL事件查看器”,2005版本打开“SQL Server Profiler”,新建一个跟踪,开始追踪数据 首先通过考勤机自带的软件,按平时的操作习惯查看出勤记录,为了方便查找到追踪的数据,我们可以设定一个参 照物,如设个日期,或者是查询某一个工号。 根据下图,我们可以看到通过SQL的数据追踪界面,我们可以很方便的通过查询我们设好的参数而快速定位到我们在 考勤界面所查询到的数据。我们前面所做的查询操作,在数据库里其实就是一条查询语句 select d.DeptName,d.DeptNo,r.EmplId, e.WorkId, e.CardId, e.EmplName, r.CardNo,DBO.CM_ConvertDate(RecDate) as RecDate, RecTime, VerifyMode, IsAuto, EquNo, InOutType, OperId, DBO.CM_ConvertDate(OperDate) as OperDate, r.Remark from AtdRecord r, #tmp130716154154046 tmp, HrEmployee e, HrDept d where tmp.EmplId = e.EmplId and r.EmplId = e.EmplId and e.DeptId = d.DeptId and r.RecDate >= '2013-06-30' and r.RecDate <= '2013-07-04' order by e.WorkId, cast(RecDate as datetime), RecTime 分析这个语句,我们可以找到语句里所查询到的表有AtdRecord,临时表#tmp130716154154046,HrEmployee 和 HrDept,在数据库里查询这些表,语法select * from 表名,看看这些表里是什么内容(其实有一定基础从上面 的语句字段中已经可以看出来了) 找出人员资料表HrEmployee,里面有工号有姓名等,AtdRecord表是打卡记录表,有这两个就可以用了 HR系统里的打卡记录存放在timer_original_rec中(同样通过数据追踪可以找出来) 好了,接下来,我们就根据timer_original_rec表里的格式,写个触发器,当考勤机软件采集数据的时候,就同步按 timer_original_rec表里的格式,把考勤数据库里新写入的数据处理成timer_original_rec表格式后写入 timer_original_rec表,在HR考勤的处理里就可以检索得到了。等于把系统里的数据采集这一步放到了考勤机自带 的软件里。当然同步的SQL语句还要加上一些日期跟时间判断来避免多次采集数据造成的记录重复。 当然有人会说,这些就失去了系统里的定时自动采集的功能,我们可以通过装个按键精灵,把打开考勤软件采集数 据的操作过程记录下来,生成个EXE,用windows系统自带的“任务计划“创建个任务,设好运行时间,就可以在我 们中午吃饭时由电脑自动把数据采集上来。 |