Foxtable(狐表)用户栏目专家坐堂 → [求助]计算工龄——两个时间相减


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

主题:[求助]计算工龄——两个时间相减

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


加好友 发短信
等级:婴狐 帖子:23 积分:264 威望:0 精华:0 注册:2012/5/23 14:37:00
[求助]计算工龄——两个时间相减  发帖心情 Post By:2012/9/6 12:33:00 [显示全部帖子]

表格里要计算员工的工龄,需要得到的结果是几年几月几日,timespan里面没有年和月,我只会做到计算总天数,但是除365余数除30的这种方法肯定是不准确的,有没有更好的准确的方法?

Dim t As TimeSpan
t = Date.Today - CDate(CurrentTable.Current("进组时间"))
OutPut.Show("工龄:" & t.TotalDays)


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


加好友 发短信
等级:婴狐 帖子:23 积分:264 威望:0 精华:0 注册:2012/5/23 14:37:00
  发帖心情 Post By:2012/9/6 12:59:00 [显示全部帖子]

代码怎么写?


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


加好友 发短信
等级:婴狐 帖子:23 积分:264 威望:0 精华:0 注册:2012/5/23 14:37:00
  发帖心情 Post By:2012/9/6 13:00:00 [显示全部帖子]

刚看到狐爸的回复,我试试


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


加好友 发短信
等级:婴狐 帖子:23 积分:264 威望:0 精华:0 注册:2012/5/23 14:37:00
  发帖心情 Post By:2012/9/6 15:29:00 [显示全部帖子]

Dim y As Integer = Date.Today.Year - CDate(CurrentTable.Current("进组时间")).Year
Dim m As Integer = Date.Today.Month - CDate(CurrentTable.Current("进组时间")).Month
Dim d As Integer = Date.Today.Day - CDate(CurrentTable.Current("进组时间")).Day
If d < 0 Then
    m = m - 1
    d = Date.DaysInMonth(Today.AddMonths(-1).Year,Today.AddMonths(-1).Month) + Date.Today.Day - CDate(CurrentTable.Current("进组时间")).Day
End If
If m < 0 Then
    y= y - 1
    m = 12 + Date.Today.Month - CDate(CurrentTable.Current("进组时间")).Month
End If
OutPut.Show("工龄:" & y & "年" & m & "月" & d & "天")

 

 

谢谢狐爸,解决了!!


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


加好友 发短信
等级:婴狐 帖子:23 积分:264 威望:0 精华:0 注册:2012/5/23 14:37:00
  发帖心情 Post By:2012/9/6 15:55:00 [显示全部帖子]

Select Case e.DataCol.name
    Case "工龄"
        Dim y As Integer
        Dim m As Integer
        Dim d As Integer
        If e.DataRow.IsNull("进组时间") Then
            e.DataRow("工龄") = Nothing
        Else
            y = Date.Today.Year - CDate(e.DataRow("进组时间")).Year
            m = Date.Today.Month - CDate(e.DataRow("进组时间")).Month
            d = Date.Today.Day - CDate(e.DataRow("进组时间")).Day
            If d < 0 Then
                m = m - 1
                d = Date.DaysInMonth(Today.AddMonths(-1).Year,Today.AddMonths(-1).Month) + Date.Today.Day - CDate(e.DataRow("进组时间")).Day
            End If
            If m < 0 Then
                y= y - 1
                m = 12 + Date.Today.Month - CDate(e.DataRow("进组时间")).Month
            End If
            e.DataRow("工龄") = y & "年" & m & "个月" & d & "天"
        End If

End Select

 

 

我在表属性中的DataColChanged事件中加入如上代码,工龄没有自动计算,求解!!

 

 


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

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


加好友 发短信
等级:婴狐 帖子:23 积分:264 威望:0 精华:0 注册:2012/5/23 14:37:00
  发帖心情 Post By:2012/9/6 16:58:00 [显示全部帖子]

必须重置才能触发吗?那多不方便啊,万一要修改还得重置,能不能只要"进组日期"列修改"工龄"列就自动触发修改呢?


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


加好友 发短信
等级:婴狐 帖子:23 积分:264 威望:0 精华:0 注册:2012/5/23 14:37:00
  发帖心情 Post By:2012/9/6 17:35:00 [显示全部帖子]

另外我改一天打开文件的时候因为today的缘故要每次刷新重置?


 回到顶部