Foxtable(狐表)用户栏目专家坐堂 → 请问如何使用表达式计算工龄?


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

主题:请问如何使用表达式计算工龄?

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:113301 积分:576952 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/6 19:28:00 [显示全部帖子]

表达式无法计算的。把上面代码放到表格的datacolchanged事件:http://www.foxtable.com/webhelp/topics/1445.htm

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


加好友 发短信
等级:超级版主 帖子:113301 积分:576952 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/6 20:44:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "入职日期"
        If e.DataRow.IsNull("入职日期") Then
            e.DataRow("工龄") = Nothing
            e.DataRow("可享年休假") = Nothing
        Else
            Dim rzrq As Date = CDate(e.NewValue)
            Dim endDate = Date.Today
            If e.DataRow.IsNull("离职日期") = False Then
                endDate = e.DataRow("离职日期")
            End If 
            Dim tp As TimeSpan = endDate - CDate(e.NewValue)
            e.DataRow("工龄") = Math.Round(tp.TotalDays / 365.2422, 2)
            Dim nYear As Integer = endDate.Year - rzrq.Year
            Select Case nYear
                Case 0 To 1
                    e.DataRow("可享年休假") = 0
                Case 2 To 9
                    e.DataRow("可享年休假") = 5
                Case 10 To 19
                    
                    e.DataRow("可享年休假") = 10
                Case Else
                    e.DataRow("可享年休假") = 20
            End Select
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:113301 积分:576952 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/6 22:41:00 [显示全部帖子]

Dim endDate = Date.Today
改为
Dim endDate as date = Date.Today

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


加好友 发短信
等级:超级版主 帖子:113301 积分:576952 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/7 8:43:00 [显示全部帖子]

表达式列就是无法保存的,这是一种固定用法,不要考虑其它的。

如果要离职日期也促发事件
    Case "入职日期"
改为
    Case "入职日期","离职日期"

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


加好友 发短信
等级:超级版主 帖子:113301 积分:576952 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/7 9:40:00 [显示全部帖子]

Select Case e.DataCol.Name
    Case "入职日期", "离职日期"
        If e.DataRow.IsNull("入职日期") Then
            e.DataRow("工龄") = Nothing
            e.DataRow("可享年休假") = Nothing
        Else
            Dim endDate As Date = Date.Today
            If e.DataRow.IsNull("离职日期") = False Then
                endDate = e.DataRow("离职日期")
            End If 
            Dim tp As TimeSpan = endDate - CDate(e.DataRow("入职日期"))
            e.DataRow("工龄") = Math.Round(tp.TotalDays / 365.2422, 2)
            Select Case e.DataRow("工龄")
                Case 0 To 1
                    e.DataRow("可享年休假") = 0
                Case 2 To 9
                    e.DataRow("可享年休假") = 5
                Case 10 To 19
                    e.DataRow("可享年休假") = 10
                Case Else
                    e.DataRow("可享年休假") = 20
            End Select
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:113301 积分:576952 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/7 15:25:00 [显示全部帖子]

1、2我测试没有问题,请上传实例说明

3、项目启动不会自动计算的,只有下面情况才会触发事件计算
a、输入两个日期列

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


加好友 发短信
等级:超级版主 帖子:113301 积分:576952 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/7 20:19:00 [显示全部帖子]


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:超级版主 帖子:113301 积分:576952 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2025/4/7 21:54:00 [显示全部帖子]


 回到顶部