以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  日期转年龄  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151132)

--  作者:nxqtxwz
--  发布时间: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

--  作者:有点蓝
--  发布时间:2020/6/16 8:49:00
--  
参考:http://www.foxtable.com/webhelp/topics/2647.htm
--  作者:nxqtxwz
--  发布时间: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


--  作者:有点蓝
--  发布时间:2020/6/16 9:14:00
--  
Dim tp As TimeSpan = Date.today - CDate(dr("出生日期"))
--  作者:nxqtxwz
--  发布时间: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.


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