以文本方式查看主题

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

--  作者:ramen
--  发布时间:2013/1/24 11:32:00
--  关于工龄的问题
请教一下高手,使用说明有教,但是不太适用,不是我想要的功能
     条件是这样的:
          工龄满1年不满10年,年休假5天
          工龄满10年不满20年,年休假10天
          工龄满20年,年休假15天
     但是,所有年休假都要次年才能享受,比如2012-5-1入职 至 2013-5-1 工龄满一年了,但是不享受年休假,要2014年到了才有5天年休假。
     我想要它根据系统的时间自动的运算,比如入职时间列输入2012-1-24,至今工龄列就自动运算为1年,年休假列为0天,如果到了次年2014年,年休假列会自动运算为1天。不知道怎么设置代码? 

--  作者:lin_hailun
--  发布时间:2013/1/24 12:03:00
--  
 请上传一个你的数据表,再谈代码怎么设置。
--  作者:ramen
--  发布时间:2013/1/24 12:49:00
--  回复:(lin_hailun)?请上传一个你的数据表,再...

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


[此贴子已经被作者于2013-1-24 12:58:24编辑过]

--  作者:ramen
--  发布时间:2013/1/24 13:12:00
--  
麻烦看一下,谢谢!


--  作者:lin_hailun
--  发布时间:2013/1/24 14:07:00
--  
 看看是不是这样?

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



--  作者:ramen
--  发布时间:2013/1/24 18:47:00
--  
对的,就是这样,谢谢你!
--  作者:dreamyuan
--  发布时间:2013/1/24 19:44:00
--  

Select Case e.DataCol.Name
    Case "入职时间"
        If e.DataRow.IsNull("入职时间") = False Then
            Dim rzrq As Date = CDate(e.NewValue)

            Dim tp As TimeSpan = Date.Today - CDate(e.NewValue)
            e.DataRow("工龄") = tp.TotalDays \\ 365.2422

            Dim nYear As Integer =
Date.Today.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   按年计算可能符合楼主的要求,我刚才看了林大的代码,修改了下,因为发现 2011.05.02的算出来没有假期 改成这样工龄准确了, 假期规则应该也可以

[此贴子已经被作者于2013-1-25 15:45:15编辑过]

--  作者:lin_hailun
--  发布时间:2013/1/25 15:14:00
--  
以下是引用dreamyuan在2013-1-24 19:44:00的发言:

Select Case e.DataCol.Name
    Case "入职时间"
        If e.DataRow.IsNull("入职时间") = False Then
            Dim rzrq As Date = CDate(e.NewValue)
            e.DataRow("工龄") = Date.Today.Year - rzrq.Year
            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   按年计算可能符合楼主的要求,我刚才看了林大的代码,修改了下,因为发现 2011.05.02的算出来没有假期


看了下,工龄不能这样算了,必须按照实际工作的天数去算,2011.05.02,是有5天假期的,测试了一下。

--  作者:dreamyuan
--  发布时间:2013/1/25 15:30:00
--  
呵呵,我是按楼主的要求做的(比如2012-5-1入职 至 2013-5-1 工龄满一年了,但是不享受年休假,要2014年到了才有5天年休假)