Foxtable(狐表)用户栏目专家坐堂 → 根据年龄获取出生日期


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

主题:根据年龄获取出生日期

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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
根据年龄获取出生日期  发帖心情 Post By:2018/11/10 19:30:00 [只看该作者]

请问老师,假设我年龄列为2岁3月15天,或为2岁,或为3岁2月,能不能根据年龄列数据获取出生日期呢?

 

请老师指点并写一下代码,谢谢!

 

学生愚钝,再追加一个问题:如果在年龄单元格只输入一个数值如1到100,按回车键后自动在数值后加上“岁”。希望用代码实现,谢谢!

[此贴子已经被作者于2018/11/10 22:08:00编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/11 9:32:00 [只看该作者]

1、参考代码

 

Dim str As String = "2岁3月15天"
Dim ary() = str.Split(new Char(){"岁", "月", "天"})
Dim d As Date = Date.Today
If str.Contains("岁") Then
    d = d.AddYears(-ary(0))
End If
If str.Contains("月") Then
    d = d.addmonths(-ary(1))
End If
If str.Contains("天") Then
    d = d.Adddays(-ary(2))
End If
msgbox(d)

 

2、看看datacolchanging事件,比如代码

 

If e.datacol.name = "年龄" AndAlso e.newvalue <> Nothing Then

    e.newvalue = e.newvalue.replace("岁", "") & "岁"

End If

 

http://www.foxtable.com/webhelp/scr/0624.htm

 


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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2018/11/11 9:56:00 [只看该作者]

老师,第一个问题返回的结果没有变化,还是当天日期,应该如何修改。

 


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/11 9:59:00 [只看该作者]

以下是引用zyxhx在2018/11/11 9:56:00的发言:

老师,第一个问题返回的结果没有变化,还是当天日期,应该如何修改。

 

 

不可能,认认真真测试代码。

 

如果写到datacolchanged事件,请对应修改细节。

 

贴出你写的代码,写到什么地方?


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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2018/11/11 10:07:00 [只看该作者]

AfterEdit事件:

Dim str As String = e.Row("年龄")
Dim ary() = str.Split(new Char(){"岁", "月", "天"})
Dim d As Date = Date.Today
If str.Contains("岁") Then
    d = d.AddYears(-ary(0))
End If
If str.Contains("月") Then
    d = d.addmonths(-ary(1))
End If
If str.Contains("天") Then
    d = d.Adddays(-ary(2))
End If
e.Row("出生日期") =  d

 

现在可以了。

 

谢谢老师指点。

[此贴子已经被作者于2018/11/11 10:13:21编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/11 11:42:00 [只看该作者]

代码写到datacolchanged事件

 

If e.DataCol.name = "年龄" Then
    Dim str As String = e.DataRow("年龄")
    Dim ary() = str.Split(new Char(){"岁", "月", "天"})
    Dim d As Date = Date.Today
    If str.Contains("岁") Then
        d = d.AddYears(-ary(0))
    End If
    If str.Contains("月") Then
        d = d.addmonths(-ary(1))
    End If
    If str.Contains("天") Then
        d = d.Adddays(-ary(2))
    End If
    e.DataRow("出生日期") =  d
End If


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


加好友 发短信
等级:小狐 帖子:388 积分:3212 威望:0 精华:0 注册:2017/4/2 19:33:00
  发帖心情 Post By:2018/11/11 12:10:00 [只看该作者]

谢谢老师!

 回到顶部