【问题标题】:Bringing in Schedules for Access calculations为访问计算引入计划
【发布时间】:2012-10-26 03:43:38
【问题描述】:

我真的不知道如何提出这个问题或给它命名,但我开始了。我在学校系统工作,我为一些心理学家创建了一个数据库,用于跟踪他们的推荐。根据州规定,他们有 60 天的时间从第一次会议之日起完成该过程。周末仍然算数,但假期不算数。我真的不知道如何使用我们拥有的日历,以便我们进行准确的计算。例如,考虑到假期,如果一个孩子今天开始,他需要在 2013 年 1 月 18 日完成所有事情,即根据我们的日程安排从现在起 60 天。有人知道我应该从哪里开始吗?

编辑

好的,我现在有一个日历表。这是我的问题。我有我的专栏,我曾经指出在计算我的 60 天时使用了哪些天。周末可用于该计算。但是,它们不能在结果中使用。如果第 60 天是星期日或星期六,则日期需要提前到星期五。我想我的第一个问题真的是,如何将我的计算限制在日历表中的日期?

【问题讨论】:

  • 你考虑过日历表stackoverflow.com/questions/12263492/…吗?您的假期存储在哪里?
  • 我还没有存储任何内容。我在数据库方面做得很好,但我才刚刚开始真正了解这样的细节。
  • 日历表在任何需要调度的数据库中确实非常有用。它们不占用太多空间。
  • 好吧,看来我需要了解一下 Caldender Tables。它们似乎不太难。
  • 所以我有一个日历表,一点也不难。我现在的问题是如何仅根据该日历中列出的日期进行计算,同时还将我的输出限制为该日历中的日期?

标签: ms-access schedule


【解决方案1】:

使用日历表很容易。

PARAMETERS start_date DateTime;
SELECT TOP 1 sub.the_date
FROM
    (
        SELECT TOP 60 the_date
        FROM tblCalendar
        WHERE
                the_date>=[start_date]
            AND work_day=True
        ORDER BY the_date
    ) AS sub
ORDER BY sub.the_date DESC;

该查询基于您已针对要评估的日期将work_day 设置为True 的假设。 IOW,work_day 将是 False 仅用于您组织的假期。

有关创建和加载日历表的示例代码,请参阅Using Start Date and End date in Access query 上的CreateTable_calendar()LoadCalendar() 过程。要最初将包括周末在内的所有日期指定为工作日,请在 LoadCalendar() 中进行此更改。

'rs!work_day = Not (Weekday(dte) = vbSunday Or _
'    Weekday(dte) = vbSaturday)
rs!work_day = True

最后,手动编辑表格以将您的假期的work_day 更改为False

【讨论】:

  • 好的......所以说实话,我不确定该把它放在哪里。我做的越多,我越希望我问我的问题。我实际上需要使用周末进行计算,但它们不能用于我的答案。例如,如果到期日是周末,则需要将其移回之前的周五。
【解决方案2】:

您可以查看工作日以确保您没有选择周末:

SELECT TOP 1 CalDate, WDay 
FROM (SELECT Top 60 c.CalDate,Weekday([Caldate]) AS WDay
      FROM Calendar c
      WHERE c.Holiday=False) a
WHERE WDay Not In (1,7)
ORDER BY CalDate DESC

【讨论】:

  • 我实际上有一套日历,周末和节假日已取消。在这一点上,我只需要知道如何根据那些日子进行计算,而不是如果我告诉它(日期 + 60)通常访问会做什么
猜你喜欢
  • 1970-01-01
  • 2016-03-02
  • 1970-01-01
  • 2016-10-31
  • 2017-06-11
  • 1970-01-01
  • 2018-07-18
  • 2020-10-23
相关资源
最近更新 更多