【Access开发】提取身份证信息

Hi,大家好呀!

最近一次直播,有人提了一个问题,如何提取身份证的年龄?刚好,最近苦于没有灵感,不知道写啥了,那我们就来看看身份证的一些该怎么处理。

其实我们的身份证号上面是没有年龄信息,但可以通过出生年月来计算年龄。同时,我们的身份证号还包含了省份,性别等信息。

在动手开发前,我们先要知道身份证号的一些规则,具体的如下:

  • 前 6 位:地址码(省市区)

  • 第 7-14 位:出生日期(YYYYMMDD)

  • 第 15-17 位:顺序码(第 17 位奇数为男性,偶数为女性)

  • 第 18 位:校验码

    知道了大概的规则后,我们就知道怎么开发,无非就是处理字符串了,让我们动手吧!

    01

    创建窗体

    这里我们需要创建一个窗体,在窗体上放几个文本框,具体的如图:

    02

    写代码

    窗体建好了,我们就可以动手写代码了,我们将获取身份证号的信息写在文本框的更新后事件里面,具体的代码如下:

    Private Sub txtID_AfterUpdate()
    
        Dim BirthDate As String
    
        Dim Gender As String
    
        Dim ProvinceCode As String
    
        Dim Province As String
    
        
    
        ' 检查身份证号码长度是否为18位
    
        If Len(Me.txtID) <> 18 Then
    
            MsgBox "无效的身份证号码", vbCritical
    
            Me.txtID.SetFocus
    
            Exit Sub
    
        End If
    
        
    
        ' 提取出生日期 (第7到14位)
    
        BirthDate = Mid(txtID, 7, 8)
    
        Me.txtBirth = Left(BirthDate, 4) & "年" & Mid(BirthDate, 5, 2) & "月" & Right(BirthDate, 2) & "日"
    
        
    
        ' 提取性别 (第17位,奇数为男,偶数为女)
    
        If CInt(Mid(txtID, 17, 1)) Mod 2 = 0 Then
    
            Gender = "女"
    
        Else
    
            Gender = "男"
    
        End If
    
        Me.txtSex = Gender
    
        
    
        ' 提取省份代码 (前2位)
    
        ProvinceCode = Left(txtID, 2)
    
        Province = GetProvinceName(ProvinceCode)
    
        Me.txtProvince = Province
    
        
    
        Me.txtAge = DateDiff("Y", Left(BirthDate, 4), Year(Date))
    
    End Sub
    
    
    
    
    
    
    
    ' 根据省份代码获取部分省份名称的函数
    
    Function GetProvinceName(Code As String) As String
    
        Select Case Code
    
            Case "11": GetProvinceName = "北京"
    
            Case "31": GetProvinceName = "上海"
    
            Case "32": GetProvinceName = "江苏"
    
            Case Else: GetProvinceName = "未知"
    
        End Select
    
    End Function

    省份代码那里,我就先写几个了,其他的就由大家自行去补充了,或者大家也可以从国家统计局官方网站下载最新的全国行政区划代码。

    03

    运行测试

    最后,我们就可以来运行测试了,我们来看一下效果:

    身份证号我是随便输入的,如果有雷同,那就是巧合了。

    OK,那到这里的话,就可以了,大家快去试一下吧。

    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包

    打赏作者

    Access开发易登软件

    你的鼓励将是我创作的最大动力

    ¥1 ¥2 ¥4 ¥6 ¥10 ¥20
    扫码支付:¥1
    获取中
    扫码支付

    您的余额不足,请更换扫码支付或充值

    打赏作者

    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值