以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  计算年龄  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=148569)

--  作者:nxqtxwz
--  发布时间:2020/4/10 11:01:00
--  计算年龄

请问老师:

DataColChanged中计算年龄:要求用2019-08-31减去[出生日期](列),然后除以10000,再取整,代码怎么写呢?

 

int[(“2019-08-31” - [出生日期])/10000]

 

把2019-08-31变成8位数,把[出生日期]变成8位数,不知怎么变。

[此贴子已经被作者于2020/4/10 11:07:56编辑过]

--  作者:有点蓝
--  发布时间:2020/4/10 11:22:00
--  
参考:http://www.foxtable.com/webhelp/topics/2647.htm
--  作者:nxqtxwz
--  发布时间:2020/4/10 11:53:00
--  

Date.Today.Year 改成实际的日期怎么改呢?

比如:2019.08.31-[出生日期]


--  作者:有点蓝
--  发布时间:2020/4/10 12:11:00
--  
dim d as date = #08/31/2019#

Dim tp As TimeSpan = d - CDate(e.DataRow("出生日期"))

--  作者:nxqtxwz
--  发布时间:2020/4/10 12:15:00
--  

foxtable真是太博大精深、变化多端了。谢谢。


--  作者:nxqtxwz
--  发布时间:2020/4/10 16:24:00
--  

这么写为什么不行?

 

If e.DataCol.name = "出生日期" Then
    If e.newvalue <> Nothing Then
        Dim a As Date = #08/31/2019#
        Dim d As Date = New Date(e.newvalue.substring(0,4), e.newvalue.substring(5,2), 1)
        Dim y As Integer = d.year
        If format(d, "MMdd") <= Format(a, "MMdd") Then
            e.DataRow("年龄") = a.year - y
        Else
            e.DataRow("年龄") = a.year  - y -1
        End If
    Else
        e.DataRow("年龄") = Nothing
    End If
End If


--  作者:有点蓝
--  发布时间:2020/4/10 16:33:00
--  
帮助的用法有什么问题?为什么不使用帮助的方法?http://www.foxtable.com/webhelp/topics/2647.htm
[此贴子已经被作者于2020/4/10 16:33:17编辑过]

--  作者:nxqtxwz
--  发布时间:2020/4/10 16:39:00
--  
老师,不好意思,帮助的例子是四舍五入,我这个要求是只舍不入。所以想用这个。
--  作者:nxqtxwz
--  发布时间:2020/4/10 17:02:00
--  
明白了,本来就是整除。/
--  作者:nxqtxwz
--  发布时间:2020/4/10 17:16:00
--  

还是不行,算出来的年龄有的正确,有的不正确。原因就是取整而不是五入。

Math.Round(tp.TotalDays / 365.2422,2)