Stuart McLachlan
stuart at lexacorp.com.pg
Tue Mar 15 22:00:15 CST 2005
On 15 Mar 2005 at 21:59, Susan Klos wrote: > No! I think I could figure that out. How many days in the month had an > event? i.e. between 1/3/ and 1/11, there were events on 6 days. Event 1, 2, > 3 and 4 occurred between 1/3 and 1/8 and that would be 5 days. Event 5 > occurred for 1 day 1/10 - 1/11. That would be 1 day. No events occurred > between 1/7 and 1/10. So where there are 8 days when events could have > occurred they only occurred on 6 of those 8 days. I thought about somehow > placing the events on a calendar and counting only the days which were not > null. But, I don't know how to do that. Any thoughts? > >Event 1 Beginning Date 1/3/05 Ending date 1/3/05 >Event 2 Beginning Date 1/3/05 Ending date 1/4/05 >Event 3 Beginning Date 1/3/05 Ending date 1/8/05 >Event 4 Beginning Date 1/6/05 Ending date 1/7/05 >Event 5 Beginning Date 1/10/05 Ending Date 1/11/05 The way I read it, There were nine possible event days (3rd,4th,5th,6th,7th,8th,9th,10th,11th) Events 1 - 4 happend on six days (3rd,4th,5th,6th,7th,8th) Event 5 happened on two other days (10th and 11th) so there were eight days with events out of the 9 (the only day without an event was 9th. Anyhow, here's one solution. Step 1. Create temporary table tblTempDates with a single DateTime field called EventDate. Step 2 create a Form frmDates with two text boxes txtStartDate and txtEnddate and as button. Step 3: Create a query (paste this into the SQL view) called "qryEventDays" SELECT tblTempDates.EventDate FROM tblTempDates, tblEvents WHERE (((tblTempDates.EventDate) Between [begindate] And [enddate]) AND ((tblEvents.EndDate)>=[Forms]![frmDates]![txtStartDate]) AND ((tblEvents.BeginDate)<=[Forms]![frmDates]![txtENdDate])) GROUP BY tblTempDates.EventDate; Step 4: Put this code in the command button's On_click event in the form: Dim lngLoopcount as long Dim strSQL as string "Build the calendar for the period CurrentDb.Execute "Delete * from tblTempdates" For lngLoopcount = txtStartDate to txtEnddate strSQL = "INSERT INTO tblTempDates ( EventDate ) SELECT " & lngLoopcount CurrentDb.Execute strSQL Next 'Get the event days Msgbox "There were events on " & Dcount("*","qryEventDays") -- Stuart