以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于身份证自动提取信息发现的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=103371) |
-- 作者:富春居士 -- 发布时间:2017/7/6 16:55:00 -- 关于身份证自动提取信息发现的问题 狐爸:在制作员工信息表的时候,我在表DatacolChanged里面根据帮助文件输入了一下代码,方便从身份证号码里提取出生日期,性别,籍贯等信息, If e.DataCol.Name = "身份证号码" Then If e.DataRow.IsNull("身份证号码") Then e.DataRow("出生日期") = Nothing Or e.DataRow("性别") = Nothing Else e.DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号码")) e.DataRow("性别")=ReadSex(e.DataRow("身份证号码")) End If ElseIf e.DataCol.Name = "出生日期" Then If e.DataRow.IsNull("出生日期") Then e.DataRow("年龄") = Nothing Else e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year End If ------------------------------------------------------------------------------- Select Case e.DataCol.name Case "身份证号码" If e.DataRow.IsNull("身份证号码") Then e.DataRow("籍贯") = Nothing Else Dim bm As String = e.DataRow("身份证号码").SubString(0,6) Dim jg As DataRow = DataTables("身份证籍贯编码").Find("籍贯编码 = \'" & bm & "\'") If jg IsNot Nothing Then e.DataRow("籍贯") = jg("籍贯") End If End If End Select (因为是分部找到的代码,所以是分开输入的) 但是如果我把身份证号码删掉(比如想重置列以便更新数据)的时候会出现报错
错误所在事件:表,基本信息,DataColChanged 详细错误信息: 调用的目标发生了异常。 从类型“Boolean”到类型“Date”的转换无效。 这是怎么回事?是否代码需要改进? 希望能给小白指导一下,谢谢! |
-- 作者:有点甜 -- 发布时间:2017/7/6 17:25:00 -- Select Case e.DataCol.name Case "身份证号码" If e.DataRow.IsNull("身份证号码") Then e.DataRow("出生日期") = Nothing e.DataRow("性别") = Nothing e.DataRow("籍贯") = Nothing Else e.DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号码")) e.DataRow("性别")=ReadSex(e.DataRow("身份证号码")) Dim bm As String = e.DataRow("身份证号码").SubString(0,6) Dim jg As DataRow = DataTables("身份证籍贯编码").Find("籍贯编码 = \'" & bm & "\'") If jg IsNot Nothing Then e.DataRow("籍贯") = jg("籍贯") End If End If Case "出生日期" If e.DataRow.IsNull("出生日期") Then e.DataRow("年龄") = Nothing Else e.DataRow("年龄") = Date.Today.Year - e.DataRow("出生日期").Year End If End Select |
-- 作者:富春居士 -- 发布时间:2017/7/7 7:49:00 -- 非常感谢,不但帮我把问题解决了,还把代码理清爽多了,试了一下,完美解决。就是不知道之前我的代码哪里出了问题。 |
-- 作者:有点甜 -- 发布时间:2017/7/7 8:32:00 -- 以下是引用富春居士在2017/7/7 7:49:00的发言:
非常感谢,不但帮我把问题解决了,还把代码理清爽多了,试了一下,完美解决。就是不知道之前我的代码哪里出了问题。
这句代码
e.DataRow("出生日期") = Nothing Or e.DataRow("性别") = Nothing
改成
e.DataRow("出生日期") = Nothing e.DataRow("性别") = Nothing |