VB身份证验证

刚学VB没多久

研究了一下身份证的验证

也参考了网上一些资料

希望帮看看有什么不足

Private Function 身份证信息校验(sfzhV As String, csrqV As String, xbV As String, errorV As String) As Integer
Dim xsV(17) As Integer
Dim i As Integer
Dim sumV As Integer
Dim modV As Integer
Dim dywsV As String
'/**************************************
'***校验身份证是否合法***
'
'身份证校验:1.出生日期 csrqV
'            2.性别     xbV
'入口参数:
'        1.sfzhV     身份证号
'        2.csrqV     出生日期
'        3.xbV       性别
'出口参数:
'        1.errorV     错误信息
'返回值: 身份证信息校验=0    为校验通过
'        身份证信息校验<>0   校验不通过
'
'1.当csrqV = "",xbV = ""时,只校验身份证出生
'  日期是否符合日期格式要求
'2.当csrqV<> ""或xbV <> ""时,同时校验
'  出生日期或性别是否跟身份证相符
'
'/***************************************


'身份证校验系数:
'从第一位到第十七位的系数分别为:
'7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
xsV(0) = 7
xsV(1) = 9
xsV(2) = 10
xsV(3) = 5
xsV(4) = 8
xsV(5) = 4
xsV(6) = 2
xsV(7) = 1
xsV(8) = 6
xsV(9) = 3
xsV(10) = 7
xsV(11) = 9
xsV(12) = 10
xsV(13) = 5
xsV(14) = 8
xsV(15) = 4
xsV(16) = 2


'校验身份证位数
If Len(Trim(sfzhV)) <> 18 Then
    errorV = "身份证位数不对!"
    身份证信息校验 = -1
    Exit Function
End If

sumV = 0

'身份证号码按位与身份证校验系数相乘,并将所有积相加。
For i = 0 To 17
    sumV = sumV + Val(Mid(sfzhV, i + 1, 1)) * xsV(i)
Next

'对sumV/11 取模
modV = sumV Mod 11

'余数对应身份证最后一位
'其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。
Select Case modV
Case 0
    dywsV = "1"
Case 1
    dywsV = "0"
Case 2
    dywsV = "X"
Case 3
    dywsV = "9"
Case 4
    dywsV = "8"
Case 5
    dywsV = "7"
Case 6
    dywsV = "6"
Case 7
    dywsV = "5"
Case 8
    dywsV = "4"
Case 9
    dywsV = "3"
Case 10
    dywsV = "2"
End Select

If dywsV <> Mid(sfzhV, 18) Then
    errorV = "身份证号不合法!"
    身份证信息校验 = -1
    Exit Function
End If

If Trim(csrqV) <> "" And Trim(csrqV) <> Mid(sfzhV, 7, 8) Then
    errorV = "身份证号码与所输入的出生日期不符!"
    身份证信息校验 = -1
    Exit Function
End If

If Trim(xbV) <> "" Then
    Select Case Val(Mid(sfzhV, 17, 1)) Mod 2
    Case 0
        If Trim(xbV) <> "女" Then
            errorV = "身份证号码与所输入的性别不符!"
            身份证信息校验 = -1
            Exit Function
        End If
    Case 1
        If Trim(xbV) <> "男" Then
            errorV = "身份证号码与所输入的性别不符!"
            身份证信息校验 = -1
            Exit Function
        End If
    End Select
End If

身份证信息校验 = 0


End Function


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值