Gustav Brock
gustav at cactus.dk
Thu Feb 13 10:29:00 CST 2003
Hi Darren > How would I show a booking that goes from 8:00am to 11:00am to > show up in not just 8:00am slot but also 9:00am and 10:00am slot?? > So it is visible to the user that 9 and 10 am are NOT free. > (Yes I do capture the end time of the booking) One option is to create a query that generates all your 168 available time slots for a week from today. Again you can use a Cartesian (multiplying) query for this having the table tbzMultiply (one column with integers) mentioned in my previous post: <SQL> SELECT DateAdd("h",[aliHour]![Factor]-1,DateAdd("d",[aliDay].[Factor]-1,Date())) AS Slot168 FROM tbzMultiply AS aliDay, tbzMultiply AS aliHour WHERE ((aliDay.Factor Between 1 And 7) AND (aliHour.Factor Between 1 And 24)); </SQL> Save this as qdyBookingSlots. Name the query from my previous post selecting the bookings: qdy BookingApp Now, create a crosstab query joining these: <SQL> TRANSFORM First(qdyBookingApp.ID) AS FørsteOfID SELECT Format([Slot168],"hh:nn") AS Hours FROM qdyBookingSlots LEFT JOIN qdyBookingApp ON qdyBookingSlots.Slot168 = qdyBookingApp.DatePeriod GROUP BY Format([Slot168],"hh:nn") PIVOT Format([Slot168],"yyyy/mm/dd"); </SQL> You amy save this as qdyBookingSlotsUsed. This will output a 7 x 24 grid with showing an ID for those time slots where a booking exists. Note the sorting. If you format the date as dd/mm/yyyy you'll get into trouble for grids crossing a month end. /gustav