Foxtable(狐表)用户栏目专家坐堂 → 请教如何停止计算死亡人员的年龄呢?


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

主题:请教如何停止计算死亡人员的年龄呢?

美女呀,离线,留言给我吧!
小小鸟
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:112 积分:1116 威望:0 精华:0 注册:2011/5/14 14:47:00
请教如何停止计算死亡人员的年龄呢?  发帖心情 Post By:2020/3/14 18:03:00 [只看该作者]

各位老师,大家下午好!我是复制下面的代码(感谢提供代码的老师)自动提取人员信息表中的性别、出生日期和年龄的,但是有些人死亡了,我想让死亡的人员年龄在死亡当日自动停止计算(或者说就计算到死亡当日),请问一下我该怎样增加代码进去呢?感谢老师的指导。



此主题相关图片如下:截图.png
按此在新窗口浏览图片


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

[此贴子已经被作者于2020/3/14 18:03:31编辑过]

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2020/3/14 18:04:00 [只看该作者]

没有辅助列,停止不了,看另一个帖子对您的回复!

 回到顶部
美女呀,离线,留言给我吧!
小小鸟
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:112 积分:1116 威望:0 精华:0 注册:2011/5/14 14:47:00
  发帖心情 Post By:2020/3/14 18:07:00 [只看该作者]

感谢您的回答,那我需要怎么做?要增加辅助列吗?

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2020/3/14 18:40:00 [只看该作者]

增加辅助列,可选值:正常|注销,列属性禁止手动输入,默认值为正常,对已经走了的人,手工选择为注销,计算年龄代码加一层判断嵌套其中:
……
if e.datarow("辅助列") = "正常"
    ……计算年龄代码
end if 

这样做,注销身份证号码的人,就不会再计算年龄了!
记得前几天回过一帖,不知怎么的,没找到,忘记了是哪个帖子!

 回到顶部
美女呀,离线,留言给我吧!
小小鸟
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:112 积分:1116 威望:0 精华:0 注册:2011/5/14 14:47:00
  发帖心情 Post By:2020/3/15 16:36:00 [只看该作者]

非常感谢老师的解答!
狐爸真是个大善人,发明了这么好的东西让我们大家应用。
[此贴子已经被作者于2020/3/15 16:39:58编辑过]

 回到顶部
美女呀,离线,留言给我吧!
小小鸟
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:112 积分:1116 威望:0 精华:0 注册:2011/5/14 14:47:00
  发帖心情 Post By:2020/3/15 17:06:00 [只看该作者]

老师,我是小白,一点概念都没有,只是依葫芦画瓢,我把您给的代码换了几个地方,在如下的代码中,现在可以实现您说的效果了,但是还有一个问题,我需要死亡人员的年龄停留在死亡时间的那一天,而不是我手动输入“注销”的那一天,可以实现吗?感谢老师百忙之中指导。


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 '否则从出生日期列中提取出年龄
       If e.DataRow("信息状态") = "正常"
        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
End If
[此贴子已经被作者于2020/3/15 17:39:05编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/15 22:33:00 [只看该作者]

直接判断死亡事件是否有值即可,如果有值取死亡时间,否则取当前时间

If e.DataCol.name = "出生日期" orelse e.DataCol.name = "死亡时间" Then '如果更改的是出生日期列
    If e.DataRow.IsNull("出生日期") Then '出生日期是否为空
        e.DataRow("年龄") = Nothing '如果为空,则清除年龄
    Else '否则从出生日期列中提取出年龄
        Dim d As Date = Date.Today
        If e.DataRow.isnull("死亡时间") = False
            d = e.DataRow("死亡时间")
        End If
        Dim n As Integer= d.Year - e.DataRow("出生日期").Year
        If e.DataRow("出生日期").AddMonths(n*12) > d Then
            n = n -1
        End If
        e.DataRow("年龄") = n
    End If
End If
[此贴子已经被作者于2020/3/15 22:34:06编辑过]

 回到顶部
美女呀,离线,留言给我吧!
小小鸟
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:112 积分:1116 威望:0 精华:0 注册:2011/5/14 14:47:00
  发帖心情 Post By:2020/3/17 17:22:00 [只看该作者]

太感谢了,问题已经解决了!

 回到顶部