Foxtable(狐表)用户栏目专家坐堂 → 日期转年龄


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

主题:日期转年龄

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
日期转年龄  发帖心情 Post By:2020/6/16 8:24:00 [只看该作者]

If e.DataCol.name = "学生姓名" Then
    If e.DataRow.isnull("学生姓名")
        e.DataRow("性别")= Nothing     ' ……其它自己补充
        e.DataRow("年龄")= Nothing
        e.DataRow("家长姓名")= Nothing
        e.DataRow("家庭住址")= Nothing
        e.DataRow("联系电话")= Nothing
       
    Else
        Dim dr As DataRow = DataTables("学生名单").Find("学生姓名 ='" & e.DataRow("学生姓名") & "'")
        If dr IsNot Nothing
            e.DataRow("性别")= dr("性别")
           ' e.DataRow("年龄")= dr("出生日期")                 怎么能直接将出生日期转换成年龄呢?
            e.DataRow("家长姓名")= dr("家庭成员姓名")
            e.DataRow("家庭住址")= dr("家庭地址")
            e.DataRow("联系电话")= dr("联系电话")
        End If
    End If
End If

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


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


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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/6/16 9:06:00 [只看该作者]

老师,出错了,请老师看看。

 

If e.DataCol.name = "学生姓名" Then
    If e.DataRow.isnull("学生姓名")
        e.DataRow("性别")= Nothing     ' ……其它自己补充
        e.DataRow("年龄")= Nothing
        e.DataRow("家长姓名")= Nothing
        e.DataRow("家庭住址")= Nothing
        e.DataRow("联系电话")= Nothing
       
    Else
        Dim dr As DataRow = DataTables("学生名单").Find("学生姓名 ='" & e.DataRow("学生姓名") & "'")
        If dr IsNot Nothing
            e.DataRow("性别")= dr("性别")
            Dim tp As TimeSpan = Date.today - CDate("出生日期")
            e.DataRow("年龄") = Math.Round(tp.TotalDays / 365.2422,2)
            e.DataRow("家长姓名")= dr("家庭成员姓名")
            e.DataRow("家庭住址")= dr("家庭地址")
            e.DataRow("联系电话")= dr("联系电话")
        End If
    End If
End If


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


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

Dim tp As TimeSpan = Date.today - CDate(dr("出生日期"))

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/6/16 9:45:00 [只看该作者]

老师您好,日期格式不对:总表中是8位数出生日期,怎么转化成符合识别的格式呢。

 Dim tp As TimeSpan = Date.today - CDate(dr("出生日期"))

 

.NET Framework 版本:4.0.30319.1026
Foxtable 版本:2020.5.29.8
错误所在事件:表,晨午检,DataColChanged
详细错误信息:
Exception has been thrown by the target of an invocation.
Conversion from string "20060503" to type 'Date' is not valid.


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


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

建议日期数据都改为使用“日期时间”型的列,不然以后很多逻辑处理都非常麻烦的

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


加好友 发短信
等级:六尾狐 帖子:1495 积分:12175 威望:0 精华:0 注册:2013/3/19 16:41:00
  发帖心情 Post By:2020/6/16 9:56:00 [只看该作者]

以下是引用有点蓝在2020/6/16 9:47:00的发言:
建议日期数据都改为使用“日期时间”型的列,不然以后很多逻辑处理都非常麻烦的
老师说的对,这个表是别人过去建的,出生日期是字符型的,但数据较多,现在改列的格式系统不支持。怎么能将20081201这种格式转换成2008-12-01这样呢?

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


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

建议多加一个日期列,datacolchanged事件

if e.datacol.name= "出生日期" andalso e.datarow.isnull("出生日期") = false then
e.datarow("日期") = cdate(e.datarow("出生日期").insert(6,"-").insert(4,"-"))
end if


Dim tp As TimeSpan = Date.today - CDate(dr("出生日期").insert(6,"-").insert(4,"-"))

 回到顶部