I think this is what I will go with
Baisically it is any school that doesn't have a performance above this date with this performer (qryHTMLEmailExclude a query of performances of a performer that is above current date, so all the schools with bookings of performer XYZ will not show in the other query).
Code:
strSQLEmailForm = "SELECT Max(tblSchools.NewSchoolsID) AS GSchoolID, Max(tblSchools.SchoolName) AS GSchoolName, tblSchools.SchoolEmail AS" & _
" GSchoolEmail, Max(tblSchools.[1ContactName]) AS G1ContactName, Max(tblSchools.[1ContactSurname]) AS G1ContactSurname" & vbCrLf & _
" FROM tblSchools" & vbCrLf & _
" WHERE (((tblSchools.Removed) Is Null) AND ((tblSchools.schooldonotemail) Is Null) " & IIf(IsNull(Me.txtPostCode), "", strPostCodeBetween("IIf(isnothing([SchoolPostCode]),Val(0),Val([SchoolPostCode])))", Me.txtPostCode, Nz(Me.txtRangeNumber, 0))) & _
IIf(IsNull(Me.txtEnroll), "", " AND ((tblSchools.Enrollment)" & Me.cboAboveBelow.Column(0) & "" & Me.txtEnroll & ") ") & _
IIf(IsNull(Me.cboArea), "", " AND ((tblSchools.AreaID)=" & Me.cboArea.Column(0) & ")") & _
" AND ((tblSchools.NewSchoolsID) Not In (Select tblSchools.NewSchoolsID from qryHTMLEmailExclude_do_not_delete WHERE ((tblBookings.BookingDate) > Date()) " & IIf(IsNull(Me.cboPerformer), "", " AND ((tblJncShows.PerformersID) =" & Me.cboPerformer.Column(0) & ")") & ")))" & vbCrLf & _
" GROUP BY tblSchools.SchoolEmail "