-- 作者:pc005637
-- 发布时间:2012/11/28 9:45:00
-- ValidPIN代码不支持15位的身份证号码怎么办?(自己解决了)
只支持18位的新身份证号码,但是有些老人只有第一代的身份证
在窗口中的身份证的文本输入框,DataParse代码输入:
If e.Value IsNot Nothing Then Dim d As String = e.Value If ValidPIN(d) = False Then If d.Length = 15 Then d = d.Insert(6,"19") Dim str0,str1,str2,str3,str4,str5,str6,str7,str8,str9,str10,str11,str12,str13,str14,str15,str16 As String Dim Int0,Int1,Int2,Int3,Int4,Int5,Int6,Int7,Int8,Int9,Int10,Int11,Int12,Int13,Int14,Int15,Int16 As Integer str0 = d.Chars(0) If Integer.TryParse(str0, Int0) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str1 = d.Chars(1) If Integer.TryParse(str1, Int1) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str2 = d.Chars(2) If Integer.TryParse(str2, Int2) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str3 = d.Chars(3) If Integer.TryParse(str3, Int3) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str4 = d.Chars(4) If Integer.TryParse(str4, Int4) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str5 = d.Chars(5) If Integer.TryParse(str5, Int5) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str6 = d.Chars(6) If Integer.TryParse(str6, Int6) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str7 = d.Chars(7) If Integer.TryParse(str7, Int7) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str8 = d.Chars(8) If Integer.TryParse(str8, Int8) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str9 = d.Chars(9) If Integer.TryParse(str9, Int9) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str10 = d.Chars(10) If Integer.TryParse(str10, Int10) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str11 = d.Chars(11) If Integer.TryParse(str11, Int11) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str12 = d.Chars(12) If Integer.TryParse(str12, Int12) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str13 = d.Chars(13) If Integer.TryParse(str13, Int13) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str14 = d.Chars(14) If Integer.TryParse(str14, Int14) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str15 = d.Chars(15) If Integer.TryParse(str15, Int15) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If str16 = d.Chars(16) If Integer.TryParse(str16, Int16) = False Then MessageBox.Show("输入的身份证号码含非法字符!") Return End If Dim r,m As Integer Dim n As String r = Int0 * 7 + Int1 * 9 + Int2 * 10 + Int3 * 5 + Int4 * 8 + Int5 * 4 + Int6 * 2 + Int7 * 1 + Int8 * 6 + Int9 * 3 + Int10 * 7 + Int11 * 9 + Int12 * 10 + Int13 * 5 + Int14 * 8 + Int15 * 4 + Int16 * 2 m = r Mod 11 Select Case m Case 0 n = "1" Case 1 n = "0" Case 2 n = "X" Case 3 n = "9" Case 4 n = "8" Case 5 n = "7" Case 6 n = "6" Case 7 n = "5" Case 8 n = "4" Case 9 n = "3" Case 10 n = "2" End Select d = d & n e.Value = d Else MessageBox.Show("输入的身份证号码不是15位!") End If End If End If
自动将15位身份证号码,转换成18位号码。
请各位大神,精简一下代码。附上 二代居民身份证验证码计算原理.doc
[此贴子已经被作者于2012-11-28 17:12:37编辑过]
|