2017-01-27 5 views
0

В Access У меня есть список машин и список действий. A Машина может быть установлена ​​на Активна и неактивна несколько раз в год. Каждое изменение статуса имеет свой ActionID и ActionDate.
В VBA я добавил код, чтобы получить первую и последнюю дату, когда машина активна. Поскольку это может случиться более одного раза, я теперь могу создать список с start- и enddates каждый раз, когда машина активна.
Два вопроса:
1) Можно ли это сделать с помощью запроса вместо VBA?
2) Можно ли отображать эти даты в какой-то временной шкале в Access?Как создать временную шкалу в 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 для активации и деактивации отличается, я не могу использовать функции MIN (date) и MAX (date) из-за предложения GROUP BY.
Список производится в 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 | N
99 | N | Y | Y | N | N | Y

Но любая временная шкала в порядке. Предложения кто-нибудь?
Thanks, Karin

+0

«Какая-то временная шкала», с которой действительно можно поработать, Карин. Вы дизайнер. – Gustav

+0

Я хочу показать недели года. Отметьте недели красным цветом, если машина активна. Одна строка для каждой активной машины. Обновлен вопрос. Благодарю. – Karin

ответ

0

Это возможно, да. Ваш результирующий набор записей не будет табличным, он будет больше похож на {Week, MachineID, Active}, и вам будет нужно отформатировать его для целей отчетности. Это может занять несколько подзапросов, например, очевидным является максимальная дата активации до конца недели и минимальная дата деактивации после этой даты активации. Если эта дата деактивации до начала недели, машина не была активна. Фактический SQL зависит от того, как определена таблица Week. Если у вас нет недельной таблицы, все становится немного сложнее, так как вам также нужен суб-запрос, который заменяет таблицу недели.

+0

Спасибо. У меня нет недельной таблицы, но при необходимости можно создать временную. До Access у нас был обзор в Excel, который был простым обзором для всех. Вероятно, создать экспорт Excel не составит труда, но это не то, что я хочу. Я хотел бы, чтобы обзор отображался в Access. – Karin

+0

Вам обязательно понадобится какая-то таблица с неделями, если вы хотите сделать это с помощью SQL, а не VBA. Затем, присоединив его к таблице со своими машинами, у вас есть таблица со всеми комбинациями Week/MachineID. С этого момента в подзапросах JOIN, как описано выше, вы получите статус Active/No Active. – SunKnight0

+0

Если вы можете быть уверены, что никакая неделя не будет проходить, если хотя бы одна машина активирована или деактивирована, вы можете создать запрос Weeks из своей таблицы запросов. – SunKnight0

Смежные вопросы