以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=92983)

--  作者:lamargxd
--  发布时间:2016/11/17 16:50:00
--  [求助]
自己做了一个通过身份证识别年龄、性别和出生日期的程序,可是每次执行以后,再次打开foxtable,出生年月里的日期总是空的,其他两项年龄和性别是在的,必须用“重置列”的命令才可以再次计算出生日期。请专家看一下我的程序,哪里可以改进,谢谢!

If e .DataCol . Name = "身份证号码" Then \'如果更改的是身份证号码列
    If e .DataRow . IsNull( "身份证号码" ) Then \'身份证号码是否为空
        e .DataRow ( "出生年月" ) = Nothing \'如果为空,则清除出生日期
        e .DataRow ( "性别") = Nothing
    Else
        If ValidPIN (e.DataRow("身份证号码")) = True \'校验身份证号码且正确
            e .DataRow ( "出生年月" ) = ReadBirthday ( e. DataRow ("身份证号码" ))
            \'从身份证号码列中提取出生日期
            e .DataRow ( "性别") = ReadSex (e .DataRow ( "身份证号码" ))
            \'从身份证号码中提取性别
            Dim t As TimeSpan = today - CDate(e.DataRow ("出生年月")) \'计算年龄
            e.DataRow ("年龄") = Math.Round(t.TotalDays / 365.2422,2)
        Else
            MessageBox.Show("身份证号码错误,请核实","提示") \'提示消息框\'
            e.DataRow( "身份证号码" ) = Nothing
        End If
    End If
End If



--  作者:有点蓝
--  发布时间:2016/11/17 17:59:00
--  
出生年月是表达式列来的吧,改为数据列
--  作者:lamargxd
--  发布时间:2016/11/18 10:24:00
--  佩服
佩服!