以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于年龄工龄计算的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=82612)

--  作者:蓝色海洋2
--  发布时间:2016/3/21 17:33:00
--  关于年龄工龄计算的问题
老师好!我按帮助在datacolchanged设置了年龄、工龄自动计算,发布后用户使用都能正常计算。今天有用户反映插入记录行后,出现此行年龄计算出现负数,其他行可以自动计算,工龄整列不能自动计算了,我用开发者账户登录,发现问题依旧,请问老师问题可能出自哪里?
--  作者:大红袍
--  发布时间:2016/3/21 21:29:00
--  

贴出你计算年龄的代码。


--  作者:蓝色海洋2
--  发布时间:2016/3/22 8:31:00
--  

Select Case e.DataCol.name
    Case "工作时间"
        If e.DataRow.IsNull("工龄") Then
            e.DataRow("工龄") = Nothing
        Else
            e.DataRow("工龄") = e.DataRow("统计日期").Year - e.DataRow("工作时间").Year
        End If
End Select

Select Case e.DataCol.name
    Case "出生日期"
        If e.DataRow.IsNull("出生日期") Then
            e.DataRow("年龄") = Nothing
        Else
            e.DataRow("年龄") = e.DataRow("统计日期").Year - e.DataRow("出生日期").Year
        End If
End Select


--  作者:Hyphen
--  发布时间:2016/3/22 9:02:00
--  
If e.DataRow.Isnull("统计日期") = False Then
    Select Case e.DataCol.name
        Case "工作时间"
            If e.DataRow.IsNull("工龄") Then
                e.DataRow("工龄") = Nothing
            Else
                e.DataRow("工龄") = e.DataRow("统计日期").Year - e.DataRow("工作时间").Year
            End If
        Case "出生日期"
            If e.DataRow.IsNull("出生日期") Then
                e.DataRow("年龄") = Nothing
            Else
                e.DataRow("年龄") = e.DataRow("统计日期").Year - e.DataRow("出生日期").Year
            End If
    End Select
End If

--  作者:大红袍
--  发布时间:2016/3/22 9:10:00
--  

Select Case e.DataCol.name
    Case "工作时间"
        If e.DataRow.IsNull("工作时间") OrElse e.DataRow.IsNull("统计日期") Then
            e.DataRow("工龄") = Nothing
        Else
            e.DataRow("工龄") = e.DataRow("统计日期").Year - e.DataRow("工作时间").Year
        End If
    Case "出生日期"
        If e.DataRow.IsNull("出生日期")  OrElse e.DataRow.IsNull("统计日期")  Then
            e.DataRow("年龄") = Nothing
        Else
            e.DataRow("年龄") = e.DataRow("统计日期").Year - e.DataRow("出生日期").Year
        End If
End Select

--  作者:蓝色海洋2
--  发布时间:2016/3/22 9:28:00
--  
谢谢老师!我的问题解决了,出现年龄为负数是因为新增行的统计日期没有数据。
--  作者:shddrh
--  发布时间:2018/2/2 11:34:00
--  
请教连续计算工龄的表达式!
--  作者:有点甜
--  发布时间:2018/2/2 11:35:00
--  
以下是引用shddrh在2018/2/2 11:34:00的发言:
请教连续计算工龄的表达式!

 

具体一点你的问题,做一个foxtable例子发上来测试。