如何在Access中创建时间轴?

时间:2017-01-27 14:43:09

标签: ms-access access-vba

在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(日期)和MAX(日期)功能。
在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中的某种时间轴中看到此列表 这样的事情:
ID | wk01 | wk02 | wk03 |等
88 | N | N | Y | Y | Y | ñ
99 | N | Y | Y | N | N |是的

但任何时间表都没问题。建议任何人?
谢谢,卡琳

1 个答案:

答案 0 :(得分:0)

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