在网上找的地区编码不是很全,好多旧编码找不到,用聚合的Api.纯粹在网上查的话“身份证地区编码”都可以不要了。
datacolchanged
Select Case e.DataCol.name
Case "身份证号" '如果更改的是身份证号码列
If e.DataRow.IsNull("身份证号") Then '身份证号码是否为空
e.DataRow("籍贯") = Nothing
e.DataRow("出生日期") = Nothing '如果为空,则清除出生日期
e.DataRow("性别") = Nothing
Else
'否则从身份证号码列中提取出生日期和籍贯
Dim bm As String =e.DataRow("身份证号").trim().SubString(0,6)
Dim dr As DataRow = DataTables("身份证地区编码").Find("编码 = '" & bm & "'")
If dr IsNot Nothing Then
e.DataRow("籍贯") = dr("籍贯")
Else '去网上查
Dim strXML As String = Functions.Execute("getXML","http://apis.juhe.cn/idcard/index?key=你申请的APPKEY&dtype=xml&cardno=" & e.DataRow("身份证号").trim())'聚合身份证查询API接口,飞老师的getXML函数
MessageBox.Show(strXML)
Dim xmlDoc As New System.XML.XmlDocument
' xmlDoc.LoadXml(strXML)
Dim reason As System.XML.XmlNodeList = xmlDoc.GetElementsByTagName("reason")
If reason(0).InnerText="成功的返回" Then '如果查到
Dim area As System.XML.XmlNodeList = xmlDoc.GetElementsByTagName("area")
e.DataRow("籍贯") = area(0).InnerText
Else
MessageBox.show(reason(0).InnerText)
End If
End If
e.DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号"))
e.DataRow("性别") = ReadSex(e.DataRow("身份证号"))
End If
End Select