2017-01-27 18 views
0

私はMachinesListとActionsListを持っています。マシンをアクティブに設定し、1年に何回か非アクティブに設定することができます。ステータスの各変更には、それぞれ独自のActionIDとActionDateがあります。
VBAでは、マシンがアクティブな最初と最後の日付を取得するためのコードを追加しました。これは何度も起こることがあるので、マシンがアクティブになるたびに開始日と終了日を含むリストを作成できます。
2つの質問:
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と(アクティベーションの場合)譲受人が必要です。また、ActivationとDeactivationのRequestNumberが異なるので、GROUP BY句のためにMIN(日付)とMAX(日付)機能を使用できません。

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でのタイムラインのいくつかの並べ替えで見たいと思ってこのリスト:VBAで生産
リストは多少このようになります。
このようなもの:
ID | wk01 | wk02 | wk03 | etc
88 | N | N | Y | Y | Y | N
99 | N | Y | Y | N | N | Y

しかし、タイムラインは問題ありません。誰か提案?
ありがとう、カリン

+0

"タイムラインのいくつかの並べ替え"は本当に多くの仕事をするために、カリン。あなたはデザイナーです。 – Gustav

+0

年の週を表示したい。マシンがアクティブな場合は、週を赤にします。アクティブな各マシンの1行。質問が更新されました。ありがとう。 – Karin

答えて

0

はい、可能です。得られるレコードセットは表形式ではなく、{Week、MachineID、Active}のようになり、レポート作成のために書式設定する必要があります。サブクエリにはいくつかのサブクエリがあります。たとえば、明らかに1つは、週末の前の有効化日付の最大値と、その有効化日付の後の最小の無効化日付です。その非アクティブ化の日付が週の開始前である場合、マシンはアクティブではありません。実際のSQLは、Weekテーブルがどのように定義されているかによって異なります。あなたが週テーブルを持っていない場合は、週テーブルを置き換えるサブクエリも必要になるので、少し複雑になります。

+0

ありがとうございます。私は週テーブルは持っていませんが、必要に応じて一時テーブルを作成することができます。 Accessの前に、Excelの概要がありました。これは誰にとっても簡単な概要でした。おそらくExcelエクスポートを作成することは難しくありませんが、それは私が望むものではありません。概要をAccessに表示したいのですが。 – Karin

+0

VBAではなくSQLでこれを行うには、何週間ものテーブルが必要です。その後、あなたのMachineIDsを持つテーブルでそれを結合することによって、すべての週/ MachineIDの組み合わせを持つテーブルがあります。その時点から上記のJOINサブクエリでActive/No Activeステータスを取得します。 – SunKnight0

+0

少なくとも1台のマシンが有効化または無効化されていない週がないことを確認できる場合は、リクエストテーブルからWeeksクエリを作成できます。 – SunKnight0

関連する問題