Foxtable(狐表)用户栏目专家坐堂 → 关于身份证自动提取信息发现的问题


  共有1772人关注过本帖树形打印复制链接

主题:关于身份证自动提取信息发现的问题

帅哥哟,离线,有人找我吗?
富春居士
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:61 积分:491 威望:0 精华:0 注册:2017/4/6 19:46:00
关于身份证自动提取信息发现的问题  发帖心情 Post By: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”的转换无效。
这是怎么回事?是否代码需要改进?
希望能给小白指导一下,谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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

 回到顶部
帅哥哟,离线,有人找我吗?
富春居士
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:61 积分:491 威望:0 精华:0 注册:2017/4/6 19:46:00
  发帖心情 Post By:2017/7/7 7:49:00 [只看该作者]

非常感谢,不但帮我把问题解决了,还把代码理清爽多了,试了一下,完美解决。就是不知道之前我的代码哪里出了问题。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By: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 


 回到顶部