Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

在ACCESS中如何使用身份证阅读器

songlee  发表于:2014-02-27 15:13:29  
复制

附件下载


 

Top
songlee 发表于:2014-02-27 15:15:43

因工作经常需要输入身份证号码,为提高输入效率,想把单位用的身份证阅读器集成到自己弄的access系统中去,实现的功能就是自动读取身份证中的相关信息,然后显示在相应的文本框中,从网上搜索到了该款身份证阅读器的VB版本的demo,由于本人水平有限,在此请高手帮忙看一下,如何实现在ACCESS中可以读取身份证信息,谢谢!

附件为VB版本的demo

因涉及到设备调试的问题,所以哪位朋友有解决的方法后,麻烦传上access的版本的demo,我这边来验证,谢谢!



songlee 发表于:2014-03-04 10:39:45

好些天了,这个求助一直没人答复,access不支持身份证阅读器设备?



songlee 发表于:2014-03-09 13:03:34

还是没人会么?还是没有类似的需求啊,发帖这久了,没动静!



在水一方 发表于:2014-03-09 14:38:42
没有读卡器,凭空开发很难。如果你有vb的源代码可以做补充,将读卡的内容计入数据库即可。

蟹仔 发表于:2014-03-09 18:36:59
首先要确定你的身份证阅读器用的是什么接口,数据是什么格式,有没有加密。如果是串口并且没有加密,那论坛里面有很多现成的例子。

一杯绿茶 发表于:2014-03-09 22:25:44
你用的什么阅读器,我原来做过。

songlee 发表于:2014-03-10 20:47:19

用的是国腾的身份证阅读器,具体型号是GTICR100-01-[通用联机型],该款阅读器用的是usb接口的,没有加密,附件里面上传了厂家提供的vb版本的样本,还有他们提供的函数包使用手册。

论坛里面有类似的例子吗?我一个都没搜到的,该不会是我的权限不够,搜索受限吧,有的话麻烦提供一下列子的链接地址,谢谢!



songlee 发表于:2014-03-10 20:52:39

之前也联系过厂家的,他们不提供这个支持,他们只提供标准的api的接口,具体的还是要应用的自己开发,水平有限啊,,用vb打开过厂家样本的提供的工程里面,看到读卡调用的代码如下:

Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Integer, ByVal lpFileName As String, ByVal nSize As Integer) As Integer
Private Declare Function InitComm Lib "termb.dll" (ByVal X As Integer) As Integer
Private Declare Function CloseComm Lib "termb.dll" () As Integer
Private Declare Function Authenticate Lib "termb.dll" () As Integer
Private Declare Function Read_Content Lib "termb.dll" (ByVal Active As Integer) As Integer
Private Declare Function GetPeopleName Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer
Private Declare Function GetPeopleSex Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer
Private Declare Function GetPeopleNation Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer
Private Declare Function GetPeopleBirthday Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer
Private Declare Function GetPeopleAddress Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer
Private Declare Function GetPeopleIDCode Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer
Private Declare Function GetStartDate Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer
Private Declare Function GetEndDate Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer
Private Declare Function GetDepartment Lib "termb.dll" (ByVal lpBuffer As String, ByVal strLen As Integer) As Integer

Private Sub Command1_Click()
    Dim str As String
    Dim com As Integer
    Dim szPath As String
    Dim iRet As Integer
   
    Text1(0).Text = ""
    Text1(1).Text = ""
    Text1(2).Text = ""
    Text1(3).Text = ""
    Text1(4).Text = ""
    Text1(5).Text = ""
    Text1(6).Text = ""
    Text1(7).Text = ""
    Text1(8).Text = ""
    Set Image1.Picture = Nothing
   
    On Error Resume Next
    iRet = InitComm(CInt(Text1(9).Text))
    If Err Then
        Err.Clear
        MsgBox "端口错误", vbOKOnly, "提示"
        Exit Sub
    End If
   
    If (iRet <> 1) Then
        MsgBox "初始化设备失败", vbOKOnly, "提示"
        Exit Sub
    End If
   
    iRet = Authenticate()
    iRet = Read_Content(1)
    If (iRet <> 1) Then
        MsgBox "读卡失败", vbOKOnly, "提示"
        Exit Sub
    End If
       
    str = Space$(256)
    iRet = GetPeopleName(str, 256)
    Text1(0).Text = Trim(str)
   
    str = Space$(256)
    iRet = GetPeopleSex(str, 256)
    Text1(1).Text = Trim(str)
   
    str = Space$(256)
    iRet = GetPeopleNation(str, 256)
    Text1(2).Text = Trim(str)
   
    str = Space$(256)
    iRet = GetPeopleBirthday(str, 256)
    Text1(3).Text = Trim(str)
   
    str = Space$(256)
    iRet = GetPeopleAddress(str, 256)
    Text1(4).Text = Trim(str)
   
    str = Space$(256)
    iRet = GetPeopleIDCode(str, 256)
    Text1(5).Text = Trim(str)
   
    str = Space$(256)
    iRet = GetStartDate(str, 256)
    Text1(6).Text = Trim(str)
   
    str = Space$(256)
    iRet = GetEndDate(str, 256)
    Text1(7).Text = Trim(str)
   
    str = Space$(256)
    iRet = GetDepartment(str, 256)
    Text1(8).Text = Trim(str)
   
    szPath = App.Path + "\zp.bmp"
    Image1.Picture = LoadPicture(szPath)
   
End Sub


 

 



cspa 发表于:2014-03-11 17:12:56
这个不是就已经写好了吗,在access身份证读取窗体做一个读取按钮,把上述代码考进去,改吧改吧,调试一下不就成了。

songlee 发表于:2014-03-11 19:01:47

正因为调试上面的上述代码仍然有问题才来这里求助的,,会提示 Text1未定义或编译错误,不知道这个要怎么定义,就是一个文本框来获取值的



cspa 发表于:2014-03-11 19:30:24
    Text1(0)什么的全改为你的窗体中的字段名。如        me.姓名= Trim(str)等等

一杯绿茶 发表于:2014-03-12 10:37:52
没有你用的阅读器,所以无法测试,既然有这个代码了,修改应该不难

songlee 发表于:2014-03-16 13:36:00

国腾身份证阅读器在access中的调用

问题已经解决了,在此非常感谢cspa和一杯绿茶两位朋友,谢谢你们!

分享一下国腾GTICR100-01身份证阅读器在access中的调用,供有此阅读器的朋友们参考!

需要注意的是要把termb.dll和wltrs.dll两个文件放在office的安装路径下,比如我的office安装在D盘了,就要把这两个文件放在D:\Microsoft Office\Office14路径下,

另外生成的身份证上的照片也在此路径下,在access中获取身份证照片时注意调用路径就行了!

 



mabaor 发表于:2015-04-30 06:34:04
好贴呀

总记录:14篇  页次:1/1 9 1 :