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


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

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

帅哥哟,离线,有人找我吗?
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)


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/9/6 12:44:00 [只看该作者]

DateDiff(interval,date1,date2)
返回两个日期之间的间隔。
Interval 包含以下设置:
yyyy 年
q    季度
m    月
y    某年的某一天
d    天
w    工作日
ww   周
h    时
n    分
s    秒 

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/6 12:46:00 [只看该作者]

Dim i As integer = Date.Today.Year - CDate(CurrentTable.Current("进组时间")).Year

OutPut.Show("工龄:" & i )

[此贴子已经被作者于2012-9-6 12:47:09编辑过]

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


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

代码怎么写?


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


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

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


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/9/6 13:16:00 [只看该作者]

标准算法:

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目96.table

 

Select Case e.DataCol.name
    Case "入职日期"
        If e.DataRow.IsNull("入职日期") Then
            e.DataRow("工龄") = Nothing
        Else
            Dim tp As TimeSpan = Date.today - CDate(e.DataRow("入职日期"))
            e.DataRow("工龄") = Math.Round(tp.TotalDays / 365.2422,2)
        End If
End Select

 

提示: 平均一年365.2422天


 回到顶部
帅哥哟,离线,有人找我吗?
leizhizhilun
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | 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
图片点击可在新窗口打开查看

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


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/6 16:16:00 [只看该作者]

 楼主,重置工龄列,触发DataColChanged事件。


[此贴子已经被作者于2012-9-6 16:17:49编辑过]

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


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

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


 回到顶部
总数 16 1 2 下一页