@Micron and Steve,
I had a tough time getting these dates into a table. Imported EventTime as text, then did a Cdate or something??(forgotten the details) to get the dates as dates. My default is to show dates in Canadian format MDY, but I also have MMM for month. I may just have changed EventTime from Text to Date after importing. (Getting older and trying to do 5 things at once)
This is my version of the table with data.
EventID |
UserID |
FName |
SName |
EventTime |
EventType |
1 |
1 |
Dan |
Holley |
10-Nov-20 9:50:00 AM |
Relay On |
2 |
1 |
Dan |
Holley |
10-Nov-20 10:15:00 AM |
Relay Off |
3 |
1 |
Dan |
Holley |
10-Nov-20 10:20:00 AM |
Relay On |
4 |
1 |
Dan |
Holley |
10-Nov-20 10:45:00 AM |
Relay Off |
5 |
1 |
Dan |
Holley |
19-Nov-20 3:30:00 PM |
Relay On |
6 |
1 |
Dan |
Holley |
19-Nov-20 4:01:00 PM |
Relay Off |
7 |
2 |
Joe |
Bloggs |
19-Nov-20 10:30:00 AM |
Relay On |
8 |
2 |
Joe |
Bloggs |
19-Nov-20 10:55:00 AM |
Relay Off |
9 |
2 |
Joe |
Bloggs |
19-Nov-20 1:30:00 PM |
Relay On |
10 |
2 |
Joe |
Bloggs |
19-Nov-20 2:15:00 PM |
Relay Off |
Micron,
I think your materials are on target.
I used your query, which I call QMicrontblLights.
Code:
SELECT tblLights.EventID, tblLights.UserID, tblLights.[EventTime] AS [Relay On], (SELECT TOP 1 Dupe.EventTime FROM tblLights AS Dupe WHERE Dupe.UserID = tblLights.UserID AND Dupe.EventTime > tblLights.EventTime
ORDER BY Dupe.EventTime, Dupe.EventID DESC;) AS [Relay Off]
FROM tblLights
WHERE (((tblLights.EventType)="relay on"));
Which gives result
EventID |
UserID |
Relay On |
Relay Off |
1 |
1 |
10-Nov-20 9:50:00 AM |
10-Nov-20 10:15:00 AM |
3 |
1 |
10-Nov-20 10:20:00 AM |
10-Nov-20 10:45:00 AM |
5 |
1 |
19-Nov-20 3:30:00 PM |
19-Nov-20 4:01:00 PM |
7 |
2 |
19-Nov-20 10:30:00 AM |
19-Nov-20 10:55:00 AM |
9 |
2 |
19-Nov-20 1:30:00 PM |
19-Nov-20 2:15:00 PM |
Then made a final query for the summation using
Code:
SELECT QMicrontblLights.UserID
,tblLights.FName
,tblLights.SName
,Sum(DateDiff("n", [Relay On], [Relay Off])) AS TotalTimePlayed_minutes
,Choose(Month([Relay On]), "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct",
"Nov", "Dec") AS ReportMonth
FROM QMicrontblLights
INNER JOIN tblLights
ON (QMicrontblLights.UserID = tblLights.UserID)
AND (QMicrontblLights.EventID = tblLights.EventID)
GROUP BY QMicrontblLights.UserID
,tblLights.FName
,tblLights.SName
,month([Relay on]);
To give result:
UserID |
FName |
SName |
TotalTimePlayed_minutes |
ReportMonth |
1 |
Dan |
Holley |
81 |
Nov |
2 |
Joe |
Bloggs |
70 |
Nov |
But OP may have to deal with table also.