通过身份证号码查看其出生日期、性别、升位、地址等情况
时 间:2008-03-15 09:22:52
作 者:Michael jiang ID:104 城市:杭州
摘 要: 利用身份证号码查看其人的出生年月及性别等情况,这在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群 (群号:54525238)
Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)
- 统计当月之前(不含当月)的记录数怎...(03.11)