Hi please see the summary of my access project, after you familiarize with it we can continue work.: 1. Purpose
Manage manual-handling/training sessions:
•	Add/Delete/Book employees by Section Leader/Manager
•	Create sessions & mark attendance by Trainers
•	Automatically calculate next due dates based on job profiles
2. Core Tables
• tabEmployee
•	EmployeeID (PK)
•	EmployeeName
•	DepartmentID → tabDepartment
•	JobProfileID → tabJobProfile
•	LastMH (Date of last manual-handling session)
• tabDepartment
•	DepartmentID (PK)
•	DepartmentName
• tabJobProfile
•	JobProfileID (PK)
•	JobProfileName
•	ExpirationYears (integer)
• tabTrainingSession
•	SessionID (PK)
•	SessionDate
•	Trainer
•	Location
•	MaxAttendees
• tabEmployeeSession
•	EmployeeSessionID (PK)
•	EmployeeID → tabEmployee
•	SessionID → tabTrainingSession
•	Attended (Yes/No)
3. Key Queries
• qryEmployeeWithDue
•	Joins tabEmployee ↔ tabJobProfile
•	Calculates DueDate:
sql
DueDate: IIf(
  IsNull([LastMH]),
  Date(), 
  DateAdd("yyyy",[ExpirationYears],[LastMH])
)
• qrySessionAttendees(_Trainer)
•	Shows attendees per session, with Attended checkbox & JobProfileID
• qryDueEmployees
•	Filters employees whose DueDate ≤ Date()
• qryUpcomingSessions
•	Filters tabTrainingSession to future dates
4. Forms & Functionality
A. Employee Management (Section Leader/Manager)
1.	frmEmployeeAdd
o	Text box for Name
o	Combo boxes for Department & Job Profile
o	“Add Employee” button
o	VBA: INSERT INTO tabEmployee (with LastMH default if desired)
2.	frmEmployeeDelete
o	Combo box cboDepartment → lists departments
o	Combo box cboEmployee (filtered by cboDepartment)
o	Displays DepartmentName & JobProfileName for context
o	“Delete Employee” button with:
	Department-match check
	DCount against tabEmployeeSession → blocks if any bookings
	Confirmation prompt
	DELETE FROM tabEmployee
3.	frmSessionBooking
o	Filter employees by department
o	Choose upcoming session
o	“Add Employee” button checks:
	No duplicate booking (DLookup)
	Capacity (DCount ≥ MaxAttendees → abort)
	INSERT INTO tabEmployeeSession
B. Session Management (Trainer)
1.	frmSessionCreate
o	Blank-record on load
o	Fields: Date, Trainer, Location, MaxAttendees
o	“Save Session” button commits record, confirms, then clears form
2.	frmSessionAttendees(_Trainer)
o	Subform shows attendees for a selected session
o	Checkbox toggles Attended
o	AfterUpdate for Attended:
vba
expYears = Nz(DLookup("ExpirationYears","tabJobProfile","JobProfileID=" & Me.txtJobProfileID),1)
newMHDate = DateAdd("yyyy", expYears, Me.SessionDate)
CurrentDb.Execute "UPDATE tabEmployee SET LastMH=#" & Format(newMHDate,"yyyy-mm-dd") & "# WHERE EmployeeID=" & Me.EmployeeID
Me.Requery
3.	frmTrainingSession
o	Main form for a specific session
o	Filters subform by SessionDate via:
vba
Me.subfrmAttendees.Form.Filter = "SessionDate=#" & Format(Me.txtSessionDate,"yyyy-mm-dd") & "#"
Me.subfrmAttendees.Form.FilterOn = True
Me.subfrmAttendees.Requery
5. Navigation & Role Selection
Main Menu: frmMainMenu
•	Option Group optUserRole (unbound)
o	Option 1 → “Section Leader/Manager”
o	Option 2 → “Trainer”
•	Continue button (cmdContinue_Click):
vba
Select Case Me.optUserRole
  Case 1: DoCmd.OpenForm "frmMenu_SectionLeader"
  Case 2: DoCmd.OpenForm "frmMenu_Trainer"
End Select
Sub-Menus
• frmMenu_SectionLeader
•	Buttons (via Command Button Wizard / embedded macros):
o	OpenForm frmEmployeeAdd
o	OpenForm frmEmployeeDelete
o	OpenForm frmSessionBooking
• frmMenu_Trainer
•	Buttons:
o	OpenForm frmSessionCreate
o	OpenForm frmSessionAttendees_Trainer
6. Macro-Based Buttons (No VBA Needed)
1.	In Design View, add a Command Button.
2.	Wizard → Form Operations » Open Form → choose form → set caption.
3.	Finish → Access creates an embedded macro behind [On Click].