2007年6月24日星期日,我终于解决了这个问题.那就是如何读取考勤刷卡钟的原始数据.在此特别感谢年胡,如果没有年胡的帮助,这个问题可能还要拖好久,关键是一开始我就走错了方向.虽然现在还有一些小问题没有解决,但那已不是最主要的困难.最主要的困难已解决.
读取考勤刷卡钟的数据是我去年就想做的事,因为一系列的原因,最主要的还是自己对硬件的接口不知道从那里写,所以一直就没有写也不敢写.对硬件的接口对我来说一直就陷入了一个误区,认为它会很难很难,因为它要涉及到我从没有接触过的方面
到今年,说的详细一点就是到这个月.实际上所有的考勤刷卡钟的厂家都会提供动态库文件的,也就是DLL文件.只要引用了这个文件,一切就好办了.下决心要写程序读取考勤刷卡机城的原始数据,起于今年.因为厂里推行一套ERP系统,里面就有人事薪资系统,但是出勤还是用的卖刷卡钟厂家的套件,分析迟到,早退,旷工这些出勤情况和正在推行的人事薪资系统不挂勾,也就是脱节了.促使我一定要解决这个问题,对所推的系统是件好事,对我也是一次成长的促进.
.从网上下载了动态库文件后,我就范了第一次错误,这个DLL文件应该放在C盘WINDOWS根目录下的,但是我放在了桌面上,所以到现在还知道怎么修改.虽然可以用.刚一开始我从网上找资料,竟然没有想关的资料,我打电话给卖刷卡钟的厂家,他们就说了一句话,说你直接用那个DLL文件就可以了,天呀,我根本就不知道怎么用.走了好多的弯路,最后打电话给年胡,原来是我定义错了.要做全局定义才对.代码如下
Public Declare Function gettxt Lib "kcomm.dll" (ByVal port
As Integer, ByVal wait As Integer, ByVal datel As Long, ByVal timel As Long,
ByVal fliname As String) As Integer.放在任意一个模块下就可以.这是最最关键的一步.第二步,引用DLL文件,最好把此DLL文件COPY到C:/WINDOWS/SYSTEMS32下面.第三是写读取的代码,如下,
Dim MyPath As String
If gettxt(1, 1, 10601,
123030, "B.txt") = 0 Then
MyPath = CurDir
Set fs =
CreateObject("Scripting.FileSystemObject")
fs.CopyFile
"" & MyPath & "\B.txt ", "c:\文件名\B.txt "
MsgBox "-采集完毕-", vbInformation, "提示"
End If
再简单不过了.其中B.TXT是读取后的文件名,MYPATH是备份路径,C:\文件名是你要分析的临时文件.
就这样,就可以,至于怎么分析这个人的出勤状况,那些程序就太长了,不说了.这类问题大同小异.,只要厂商给出DLL文件,读取打卡原始数据应该没有问题的.
今天好高兴,有机会请年胡吃饭.
[此贴子已经被作者于2007-6-25 7:26:31编辑过]
|