I would create a table [tblAllDates] with a single date field [TheDate]. Add
all dates for whatever date range you will ever need. Assuming you have a
table of bookings with the entertainer ID and the date they are either
booked or unavailable:
tblBookings
==============
EntertainerID
BookedDate
And a table of entertainers:
tblEntertainers
===================
EntertainerID
LastName
FirstName
You can then create a cartesian query [qcartDatesEntertainers] of all dates
and entertaners like:
SELECT tblAllDates.TheDate, EntertainerID, LastName, FirstName
FROM tblAllDates, tblEntertainers;
To find out all open dates for all entertainers, create a query with sql of:
SELECT qcartDatesEntertainers.*
FROM tblBookings RIGHT JOIN qcartDatesEntertainers ON
(tblBookings.BookedDate = qcartDatesEntertainers.TheDate)
AND (tblBookings.EntertainerID = qcartDatesEntertainers.EntertainerID)
WHERE (((tblBookings.BookedDate) Is Null));