Is this intended to be a daily attendance record? If so you do not need to include a 'present' field. You can infer it from a person NOT being absent. If you have 10 employees and you record 'present' which is going to be a vast majority of your records you're going to end up with 200+ records per year per person. Now assuming you have 2 - 3 weeks of vacation and 1 - 2 weeks of sick time per year, you can reduce that number to a maximum of 25 records per person per year. Also, you do not need to keep track of different absence types in different fields. You can record it in one field and have a table that stores the absence type (Sick, Vacation, Personal, etc) make sure that field has a primary key and only store the primary key in the employee absence table.
You've also got fields on your employee table that are identical to your attendance table, if you are using that to store calculated values that's an extremely bad idea and I wouldn't do it. Calculated values should never be stored in a table.
barring all that this query will total each attendance type in your current structure by a user input date range:
Code:
SELECT AttendanceT.StaffID, StaffT.Forename, StaffT.Surname, Abs(Sum([attendancet]![Absent])) AS TotAbsent, Abs(Sum([attendancet]![Late])) AS TotLate, Abs(Sum([attendancet]![Present])) AS TotPresent, Abs(Sum([attendancet]![Sick])) AS TotSick
FROM StaffT INNER JOIN AttendanceT ON StaffT.StaffID = AttendanceT.StaffID
WHERE (((AttendanceT.AttendanceDate) Between [Enter the Starting Date] And [Enter the Ending Date]))
GROUP BY AttendanceT.StaffID, StaffT.Forename, StaffT.Surname;
Just make a query, go to the SQL code and cut and paste the code above, then run the query or go to the design view to see how it's constructed.