Foxtable(狐表)用户栏目专家坐堂 → 请教狐狸爸爸:关于从身份证号码中自动提取出生年月、性别、年龄代码问题


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

主题:请教狐狸爸爸:关于从身份证号码中自动提取出生年月、性别、年龄代码问题

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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
请教狐狸爸爸:关于从身份证号码中自动提取出生年月、性别、年龄代码问题  发帖心情 Post By:2012/5/22 15:47:00 [只看该作者]

DataColChanged 事件

If e .DataCol . Name = "身份证号码" Then '如果更改的是身份证号码列
    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 ( "身份证号码" ))
        e .DataRow ( "年龄") = Date .Today . Year - e .DataRow ( "出生日期" ).Year
    End If
End If

狐狸爸爸帮忙看看以上代码写得对不对,或者有没有更换的代码,万分感谢!



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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/5/22 16:10:00 [只看该作者]

上面的代码,有问题吗?

我看不出有问题啊。


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


加好友 发短信
等级:童狐 帖子:224 积分:2808 威望:0 精华:2 注册:2012/3/14 15:55:00
  发帖心情 Post By:2012/5/22 22:57:00 [只看该作者]

呵呵,自动计算的年龄需要具体到 年月 日 比如今天是2012-05-22,在1982-05-22出生的年龄为30岁,在 1982-05-23出生的年龄为29岁;
后面找了几个狐狸爸爸之前回复的例子,终于可以了,把代码发布出来跟大家一起分享一下。

If e .DataCol . Name = "身份证号码" Then '如果更改的是身份证号码列
    If e .DataRow . IsNull( "身份证号码" ) Then '身份证号码是否为空
        e .DataRow ( "出生日期" ) = Nothing '如果为空,则清除出生日期
        e .DataRow ( "性别") = Nothing
    Else
        '否则从身份证号码列中提取出生日期
        e .DataRow ( "出生日期" ) = ReadBirthday ( e. DataRow ("身份证号码" ))
        e .DataRow ( "性别") = ReadSex (e .DataRow ( "身份证号码" ))
    End If
End If
If e.DataCol.name = "出生日期" Then '如果更改的是出生日期列
    If e.DataRow.IsNull("出生日期") Then '出生日期是否为空
        e.DataRow("年龄") = Nothing '如果为空,则清除年龄
    Else
        '否则从出生日期列中提取出年龄
        Dim n As Integer= Date.Today.Year - e.DataRow("出生日期").Year
        If e.DataRow("出生日期").AddMonths(n*12) > Date.Today Then
            n = n -1
        End If
        e.DataRow("年龄") = n
    End If
End If

 回到顶部