通过身份证号码查看其出生日期、性别、升位、地址等情况-蒋海兵
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> 人事应用


通过身份证号码查看其出生日期、性别、升位、地址等情况

发表时间:2008/3/15 9:22:52 评论(5) 浏览(21637)  评论 | 加入收藏 | 复制
   
摘 要:     利用身份证号码查看其人的出生年月及性别等情况,这在ACCESS是可以实现的,本人也曾做过介绍,但用access怎么实现15位号码升级为18位号码以及如何自动读取身份证当中的地址信息却尚未涉及,这里看到一个网摘刚好有这个介绍,现转摘过来供access爱好者参考。想来肯定有用得上的时候。时常有报道说某犯罪嫌疑人用假身份证犯罪,我想相关机关或单位如果有我这样一个身份证查询程序,查一下身份证,问几个问题,犯罪分子应该立马露馅。程序原码如下--
正 文:

       利用身份证号码查看其人的出生年月及性别等情况,这在ACCESS是可以实现的,本人也曾做过介绍,但用access怎么实现15位号码升级为18位号码以及如何自动读取身份证当中的地址信息却尚未涉及,这里看到一个网摘刚好有这个介绍,现转摘过来供access爱好者参考。想来肯定有用得上的时候。时常有报道说某犯罪嫌疑人用假身份证犯罪,我想相关机关或单位如果有我这样一个身份证查询程序,查一下身份证,问几个问题,犯罪分子应该立马露馅。程序原码如下--

Private Sub txtStatusCode_AfterUpdate()
Dim AreaCode, Area, BirthDay, NewCode As String
Dim Calendar As Date

On Error Resume Next

Me.cmdToEdit.SetFocus

Me.txtBirthDay = Null
Me.txtGivePassArea = Null
Me.txtSex = Null
Me.txtStatusCodeNew = Null
Me.txtAge = Null

'检查身份证号码位数
If CheckLength(Me.txtStatusCode) = False Then
    MsgBox ("身份证号码的位数出现错误.")
    Me.txtStatusCode.SetFocus
    Exit Sub
End If

'检查身份证号码中有无非法字符
If CheckChar(Me.txtStatusCode) = False Then
    MsgBox ("身份证号码中含有非法字符.")
    Me.txtStatusCode.SetFocus
    Exit Sub
End If

'检查地区代码
If CheckArea(Mid(Me.txtStatusCode, 1, 6)) = False Then
    Exit Sub
End If

Area = ""
AreaCode = Mid(Me.txtStatusCode, 1, 6)    '取得地区代码

'取得发证地区名称
Area = Area & DLookup("[名称]", "地区代码", "[代码]='" & Mid(AreaCode, 1, 2) & "0000'")
Area = Area & DLookup("[名称]", "地区代码", "[代码]='" & Mid(AreaCode, 1, 4) & "00'")
Area = Area & DLookup("[名称]", "地区代码", "[代码]='" & AreaCode & "'")
   
'如果身份证号码位数是十五位则增至十七位
If Len(Me.txtStatusCode) = 15 Then
    NewCode = Mid(Me.txtStatusCode, 1, 6) & "19" & Right(Me.txtStatusCode, 9)
Else
    NewCode = Me.txtStatusCode
End If

'校验出生日期
BirthDay = Mid(NewCode, 7, 4) & "-" & _
    Mid(NewCode, 11, 2) & "-" & Mid(NewCode, 13, 2)
Calendar = DateValue(BirthDay)
If Err() = 13 Then
    MsgBox ("身份证号码中的出生日期部分错误.")
    Me.txtStatusCode.SetFocus
    Exit Sub
End If

Err() = 0

'可以根据情况设置年龄的上下限,这里是:年龄[0,100]
If Year(Date) - Year(BirthDay) > 100 or _
    Year(Date) - Year(BirthDay) < 0 or _
    Year(BirthDay) > Year(Date) Then
    MsgBox ("身份证号码中的出生日期部分错误.")
    Me.txtStatusCode.SetFocus
    Exit Sub
End If

'校验身份证号码并生成有效的身份证号码
NewCode = ""
NewCode = MakeNewCode(Me.txtStatusCode)

'显示结果
Me.txtStatusCodeNew = NewCode
Me.txtBirthDay = BirthDay
Me.txtGivePassArea = Area
Me.txtSex = IIf(InStr(1, "13579", Right(Me.txtStatusCode, 1)) <> 0, "男", "女")
Me.txtAge = Year(Date) - Year(BirthDay)

Me.txtStatusCode.SetFocus

End Sub

Public Function CheckChar(strCode As String) As Boolean
Dim I As Integer
Dim J As Integer

If Len(strCode) = 18 Then
    J = 17
Else
    J = Len(strCode)
End If

For I = 1 To J
    If Asc(Mid(Me.txtStatusCode, I, 1)) > 57 or _
        Asc(Mid(Me.txtStatusCode, I, 1)) < 48 Then
        CheckChar = False
        Exit Function
    End If
Next I

If Len(strCode) = 18 Then
    If Asc(UCase(Right(strCode, 1))) > 57 or _<


Access软件网交流QQ群(群号:198465573)
 
 相关文章
EXCEL根据身份证号码自动提取性别、出生年月日和年龄(通用公式)  【风行  2011/4/23】
【access入门】三种方法控制输入15位与18位身份证号码的示例...  【麥田  2011/5/28】
[access查询]根据身份证号码进行生日提醒示例  【煮茶论道  2011/9/4】
身份证号码校验公式  【雄鹰  2011/9/5】
用excel筛选包含特定数据的方法,筛选身份证号码里面指定位数的数...  【欢乐小爪  2012/11/29】
常见问答
技术分类
相关资源
文章搜索
关于作者

蒋海兵

文章分类

文章存档

友情链接