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


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

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

美女呀,离线,留言给我吧!
小小鸟
  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


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

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

 回到顶部
美女呀,离线,留言给我吧!
小小鸟
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

 回到顶部
美女呀,离线,留言给我吧!
小小鸟
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | 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编辑过]

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


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

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

 回到顶部