Simplifying your query -- since you only deal with 1 table, you do NOT need to qualify each field with the TableName
Code:
SELECT [Transaction ID]
, [Assoc Nm]
, [Assoc ID]
, [Dpt Nbr]
, [Dpt Nm]
, [Job Ttl Cd]
, [Emp Ctg]
, [A/I]
, [Hire Date]
, MonthsatHD
, Shift
, Reason
, DateSerial(Year([Date]),Month([Hire Date]),Day([Hire Date])) AS [Reset Date]
, Category
, Date
, [Hours Missed]
, Leader
, DocumentGiven
, DocumentReturned
, Comments
, InputBy
, Excused
, ExcusedBy
FROM tblAttendance
WHERE (((Date) Is Not Null));
However, Date is a Access reserved word (a function that returns today's Date) and today's Date can never be Null so your WHERE condition is doing nothing, as I see it.
I'm not sure now of what exactly you want to display, but I think you'll need an IIF (immediate if) along these lines
IIF( the date this year has passed then
use the date for this year
else
use the date from last year)
IIF(DateDiff("d",Date,DateSerial(Year([Date]),Month([Hire Date]),Day([Hire Date])) > 0 ,
DateSerial(Year([Date]),Month([Hire Date]),Day([Hire Date])),
DateSerial(Year([Date]) - 1 ,Month([Hire Date]),Day([Hire Date]))) as ResetDate
and i think this IIF statement would replace this line in your query
DateSerial(Year([Date]),Month([Hire Date]),Day([Hire Date])) AS [Reset Date]
Good luck.