【问题标题】:How can I create a timeline in Access?如何在 Access 中创建时间线?
【发布时间】:2017-01-28 00:00:32
【问题描述】:

在 Access 中,我有一个 MachinesList 和 ActionsList。一台机器每年可以多次设置为活动和非活动。每次状态变化都有自己的 ActionID 和 ActionDate。
在 VBA 中,我添加了一些代码来获取机器处于活动状态的第一个和最后一个日期。由于这种情况可能不止一次发生,因此我现在可以在每次机器处于活动状态时创建一个包含开始日期和结束日期的列表。
两个问题:
1) 这可以通过查询而不是 VBA 来完成吗?
2) 是否可以在 Access 的某种时间线中显示这些日期?

这是我必须创建的日期列表:

SELECT DISTINCT Requests.RequestNumber, Requests.MachineID, Actions.Assignee, Actions.Action, Actions.TRDate FROM SelectedIDs LEFT JOIN (Requests LEFT JOIN Actions ON Requests.RequestNumber = Actions.RequestNumber) ON SelectedIDs.MachineID = Requests.MachineID ORDER BY Requests.MachineID, Actions.TRDate;

我确实需要 RequestNumber 和受让人(在激活的情况下)以供进一步使用。由于激活和停用的 RequestNumber 不同,由于 GROUP BY 子句,我不能使用 MIN(date) 和 MAX(date) 功能。
VBA 中生成的列表有点像这样:

2325          ID1234     29-11-2016    16-3-2017 
2323          ID1234     28-3-2017     27-4-2017 
2203          ID9999     25-1-2017     27-2-2017 

我希望在 Access 的某种时间线中看到此列表。
像这样:
身份证 | wk01 | wk02 | wk03 |等
88 | N | N |是 |是 |是 | N
99 | N |是 |是 | N | N |是的

但是任何时间线都可以。有人建议吗?
谢谢,卡琳

【问题讨论】:

  • “某种时间线”真的很有用,卡琳。你是设计师。
  • 我想显示一年中的星期几。如果机器处于活动状态,则将周标记为红色。每台处于活动状态的机器对应一条线。更新了问题。谢谢。

标签: ms-access vba


【解决方案1】:

有可能,是的。您生成的记录集不会是表格的,它更像是 { Week, MachineID, Active },并且将由您自行设置格式以用于报告目的。它可能需要一些子查询,例如一个明显的子查询是一周结束前的最大激活日期,以及该激活日期之后的最小停用日期。如果该停用日期在一周开始之前,则机器未激活。实际的 SQL 取决于您的 Week 表是如何定义的。如果您没有周表,事情会变得有点复杂,因为您还需要一个替换周表的子查询。

【讨论】:

  • 谢谢。我没有周表,但如果需要可以创建一个临时表。在访问之前,我们在 Excel 中进行了概述,这对每个人来说都是一个简单的概述。创建 Excel 导出可能并不难,但这不是我想要的。我希望在 Access 中显示概览。
  • 如果你想用 SQL 而不是 VBA 来做这件事,你肯定需要一些带有几周的表。然后通过将它与具有您的 MachineID 的表连接,您将拥有一个包含所有 Week/MachineID 组合的表。从那时起,如上所述,加入子查询以获得活动/非活动状态。
  • 如果您可以确定在没有至少一台机器被激活或停用的情况下没有一周会过去,您可以从您的请求表中创建您的 Weeks 查询。
猜你喜欢
  • 2021-10-08
  • 1970-01-01
  • 2011-01-24
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 2015-04-17
相关资源
最近更新 更多