在我的Access数据库表单中,我有一个字段,其中包含休假时间的计算。目前的公式如下:
Function calcVacEarned(asOfDate As Date, HireDate As Date)
Dim yos As Single
yos = (asOfDate - HireDate) / 365.25
Select Case yos
Case Is > 10
calcVacEarned = 120
Case Is > 3
calcVacEarned = 80
Case Is > 1
calcVacEarned = 40
Case Else
calcVacEarned = 0
End Select
End Function
然而,时间不正确。我们的休假时间从周年纪念日到第一年的周年纪念日和接下来几年的日历年。
例如,如果我于2010年2月11日被聘用,我的周年纪念日是11/02/2011,这将给我1年的服务和5天的假期。 (所以我从11/02/2011 - 2011年12月31日开始我的5天或者失去它们)
然后在2012年1月1日,我的休假时间将在第2年的第5天开始。(我已经从2012年1月1日 - 12月31日开始这5天。
2013年1月1日我将进入第3年并收到10天。
我需要上面的功能来代表这个...帮助!!谢谢
答案 0 :(得分:0)
我认为如果我理解你的问题,这将会做你想要的。您只需要更改大于3年的雇用日期。
Function calcVacEarned(asOfDate As Date, HireDate As Date)
calcVacEarned = 0
Dim yos As Single
yos = (asOfDate - HireDate) / 365.25
If yos > 1 And yos < 2 Then
calcVacEarned = 40
ElseIf yos > 2 Then
HireDate = "01/01/" & Year(HireDate)
End If
yos = (asOfDate - HireDate) / 365.25
Select Case yos
Case Is > 10
calcVacEarned = 120
Case Is > 3
calcVacEarned = 80
End Select
End Function