This would be easier if only one 'detail' row existed per page and it contained five columns for the five dates. That way the textboxes on the report could be bound and there's no need to control the paging.
Why not write code to repopulate a temporary table each time the report is run:
tblDates(ClassID, D1,D2,D3,D4,D5)
The code loops through tblClassSchedule to add one row for each collection of five dates for a class.
Link this table to the other tables in the record source for your form and you should be there.