If I remember correctly, you said that an employee can have more than 1 active job description, if so, then you cannot include the employee job description table in your summing query. Additionally, since you already have the points in the attendance type table there is no need for this:
Sum(IIf([fkAttendancetypeID]=2,1,IIf([fkAttendancetypeID]=3,0.5,IIf([fkAttendancetypeID]=4,0.5,IIf([fkAttendancetypeID]=5,1,0)))))
You would just use a query that joins the attendance table and the attendance type table
SELECT tblEmployeeAttendance.fkEmployeeID, tblEmployeeAttendance.dteAttendance, tblAttendanceTypes.longPoints
FROM tblAttendanceTypes INNER JOIN tblEmployeeAttendance ON tblAttendanceTypes.pkAttendanceTypeID = tblEmployeeAttendance.fkAttendanceTypeID;
You would use the above query as the base for your summing query.
Back to the job descriptions, if each person only had 1 active job that could be handled with an aggregate query that finds the most active job based on a date field (you would have to add one to your table) using the MAX(datefield), but since, in your case, a person can have multiple active jobs that has to be handled differently. What you have to do is concatenate the jobs from multiple records into 1. Fortunately, others have developed a custom function to handle that; here is a link to a site with that function.
Sum(IIf([fkAttendancetypeID]=2,1,IIf([fkAttendancetypeID]=3,0.5,IIf([fkAttendancetypeID]=4,0.5,IIf([fkAttendancetypeID]=5,1,0)))))
You would just use a query that joins the attendance table and the attendance type table
SELECT tblEmployeeAttendance.fkEmployeeID, tblEmployeeAttendance.dteAttendance, tblAttendanceTypes.longPoints
FROM tblAttendanceTypes INNER JOIN tblEmployeeAttendance ON tblAttendanceTypes.pkAttendanceTypeID = tblEmployeeAttendance.fkAttendanceTypeID;
You would use the above query as the base for your summing query.
Back to the job descriptions, if each person only had 1 active job that could be handled with an aggregate query that finds the most active job based on a date field (you would have to add one to your table) using the MAX(datefield), but since, in your case, a person can have multiple active jobs that has to be handled differently. What you have to do is concatenate the jobs from multiple records into 1. Fortunately, others have developed a custom function to handle that; here is a link to a site with that function.