VB身份证验证

前端之家收集整理的这篇文章主要介绍了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
原文链接:https://www.f2er.com/vb/257841.html

猜你在找的VB相关文章