If e.DataCol.name = "身份证号码"
If e.DataRow.isnull("身份证号码") = False
Dim sum,ai,n As Integer
If len(e.DataRow("身份证号码")) > 15
If len(e.DataRow("身份证号码")) = 18
If IsNumeric(e.DataRow("身份证号码")) = True OrElse IsNumeric(left(e.DataRow("身份证号码"),17)) = True And right(e.DataRow("身份证号码"),1) = "X"
Dim wi() As Integer = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}
For i As Integer = 0 To 16
ai = e.DataRow("身份证号码").SubString(i,1)
sum = sum + ai*wi(i)
Next
n = sum Mod 11
Dim jym() As String = {"1","0","X","9","8","7","6","5","4","3","2"}
If jym(n) = right(e.DataRow("身份证号码"),1)
Dim y,m,d As Integer
y = e.DataRow("身份证号码").SubString(6,4)
m = e.DataRow("身份证号码").SubString(10,2)
d = e.DataRow("身份证号码").SubString(12,2)
If y > 1900 And y < 2100 And m > 0 And m < 13
If d > 0 And d <= Date.DaysInMonth(y,m)
e.DataRow("出生日期") = new Date(y,m,d)
Else
MessageBox.show("对不起,检测到该身份证号码持有人的出生日期的日数据不合法,请检查!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End If
Else
MessageBox.show("对不起,检测到该身份证号码持有人的出生日期的月数据不合法,请检查!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End If
n = e.DataRow("身份证号码").SubString(16,1) Mod 2
If n = 1
e.DataRow("性别") = "男"
Else
e.DataRow("性别") = "女"
End If
Dim s As String = e.DataRow("身份证号码").SubString(0,2) & "0000"
Dim dq As String
Dim dr As DataRow
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dr("县级以上地区名称")
End If
s = e.DataRow("身份证号码").SubString(0,4) & "00"
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dq & dr("县级以上地区名称")
Else
s = e.DataRow("身份证号码").SubString(0,3) & "000"
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dq & dr("县级以上地区名称")
End If
End If
s = e.DataRow("身份证号码").SubString(0,5) & "0"
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dq & dr("县级以上地区名称")
End If
s = e.DataRow("身份证号码").SubString(0,6)
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dq & dr("县级以上地区名称")
End If
e.DataRow("籍贯") = dq
Else
MessageBox.show("对不起,该身份证号码无法通过验证,请检查!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.show("对不起,身份证号码字符格式不合法,请重新输入!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
MessageBox.show("对不起,身份证号码长度不合法,请重新输入!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Else
If len(e.DataRow("身份证号码")) < 15
MessageBox.show("对不起,身份证号码长度不合法,请重新输入!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
Else
Dim y,m,d As Integer
y = e.DataRow("身份证号码").SubString(6,2)
y = 1900 + y
m = e.DataRow("身份证号码").SubString(8,2)
d = e.DataRow("身份证号码").SubString(10,2)
If m > 0 And m < 13
If d > 0 And d <= Date.DaysInMonth(y,m)
e.DataRow("出生日期") = new Date(y,m,d)
Else
MessageBox.show("对不起,检测到该身份证号码持有人的出生日期的日数据不合法,请检查!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End If
Else
MessageBox.show("对不起,检测到该身份证号码持有人的出生日期的月数据不合法,请检查!","系统提示",MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End If
n = e.DataRow("身份证号码").SubString(14,1) Mod 2
If n = 1
e.DataRow("性别") = "男"
Else
e.DataRow("性别") = "女"
End If
Dim s As String = e.DataRow("身份证号码").SubString(0,2) & "0000"
Dim dq As String
Dim dr As DataRow
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dr("县级以上地区名称")
End If
s = e.DataRow("身份证号码").SubString(0,4) & "00"
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dq & dr("县级以上地区名称")
Else
s = e.DataRow("身份证号码").SubString(0,3) & "000"
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dq & dr("县级以上地区名称")
End If
End If
s = e.DataRow("身份证号码").SubString(0,5) & "0"
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dq & dr("县级以上地区名称")
End If
s = e.DataRow("身份证号码").SubString(0,6)
dr = DataTables("身份证地区编码").find("编码 = " & s)
If dr IsNot Nothing
dq = dq & dr("县级以上地区名称")
End If
e.DataRow("籍贯") = dq
End If
End If
Else
e.DataRow("性别") = Nothing
e.DataRow("出生日期") = Nothing
e.DataRow("籍贯") = Nothing
End If
End If
If e.DataCol.name = "出生日期"
If e.DataRow.isnull("出生日期") = False
Dim tp As TimeSpan = Date.today - CDate(e.DataRow("出生日期"))
e.DataRow("年龄") = Math.Round(tp.TotalDays / 365.2422,2)
Else
e.DataRow("年龄") = Nothing
End If
End If