【问题标题】:Access 2010 calculating the number of workdaysAccess 2010 计算工作日数
【发布时间】:2014-12-01 22:25:01
【问题描述】:

我是 Access 2010 的新手,需要获取一个工作周中的天数,不包括假期,但是有一个转折。我已经能够使用互联网上出现的工作日标准 VB 代码,它非常适用于简单的周一 - 周五或周一 - 周六计算。我的问题是,如果周五、周六和周日都算作 1 天,我该如何或是否可以操纵此代码来计算天数?

示例:计算从 2014 年 11 月 25 日星期二到今天的天数。

  1. -今天的日期 = 2014 年 12 月 1 日,星期一;
    - 2014 年 12 月 1 日,星期一 = 0;
    - 2014 年 11 月 30 日,星期日 = 3;
    -2014 年 11 月 29 日,星期六 = 3;
    -2014 年 11 月 28 日,星期五 = 3;
    -2014 年 11 月 27 日星期四(节假日)= 2;
    -2014 年 11 月 26 日,星期三 = 2;
    - 2014 年 11 月 25 日,星期二 = 1

所以在上面的例子中,天数是 3。

【问题讨论】:

  • 你考虑过日历表吗?它们非常有用。
  • 由于您没有共享您正在使用的代码,因此很难得到准确的答案。在您的搜索中,您可能会遇到可以告诉您某个日期范围内有多少个“星期五”的代码。为什么不将工作日计算为周一至周日减去周五(或周六/周日)的数量。

标签: ms-access-2010


【解决方案1】:

如果您需要考虑法定假日,您确实需要使用某种表格。纯算法解决问题的方法难以管理并且容易失败,主要是因为

  1. 固定日期的假期可能会在其他日期遵守。例如,如果圣诞节是在星期六,那么员工可能会在星期五休息一天。
  2. 有些假期日期难以计算。特别是,Good Friday 被定义为(至少在加拿大)“春分后第一个满月之后的第一个星期日之前的星期五”。

在其最简单的形式中,[DatesTable] 可能如下所示:

theDate     dayOff  comment         
----------  ------  ----------------
2014-11-21  False                   
2014-11-22  True    Saturday        
2014-11-23  True    Sunday          
2014-11-24  False                   
2014-11-25  False                   
2014-11-26  False                   
2014-11-27  True    Thanksgiving Day
2014-11-28  False                   
2014-11-29  True    Saturday        
2014-11-30  True    Sunday          
2014-12-01  False                   
2014-12-02  False                   

计算 2014 年 11 月 25 日和 2014 年 11 月 30 日(含)之间的工作日数就是

SELECT COUNT(*) AS WorkDays 
FROM DatesTable 
WHERE theDate Between #2014-11-25# And #2014-11-30#
    AND dayOff=False;

【讨论】:

    猜你喜欢
    • 2010-09-25
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多