【问题标题】:Vacation Time Calculation假期时间计算
【发布时间】:2013-05-23 14:52:00
【问题描述】:

在我的 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 日被录用,我的周年纪念日是 2011 年 2 月 11 日,这将给我 1 年的服务和 5 天的假期。 (所以我必须从 2011 年 11 月 2 日到 2011 年 12 月 31 日休息 5 天,否则会失去它们)

然后在 2012 年 1 月 1 日,我的假期时间将从第 2 年的 5 天开始。(我有 2012 年 1 月 1 日至 2012 年 12 月 31 日这 5 天。

2013 年 1 月 1 日,我将进入第三年并获得 10 天。

我需要上面的函数来表示这个......帮助!谢谢

【问题讨论】:

  • 如果我在 2010 年 6 月 10 日被录用,我的 1 年日期是 06/10/2011,我的两年日期是 01/01/2012,我的三年日期是 01/01/2013 .
  • 与它无关,每年都会重置。
  • 如果我正确理解了您的示例,这是否意味着您在受雇的前 365 天有 0 个假期?
  • “时间没有正确出来”是对问题的相当模糊的描述。
  • @PowerUser 是的,这是正确的,您在受雇的前 30 天没有资格休假。

标签: function date ms-access vba


【解决方案1】:

我认为,如果我正确理解了您的问题,这将满足您的要求。您只需更改超过 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多