1. Need a dataset of all dates for 3 months. This can be produced by a query but it is a very tricky, very slow query. So maybe use VBA to populate a 'temp' table with appropriate dates when procedure is run (purge records at beginning) or maintain a table of dates and add records as needed and apply filter.
2. You show international date format. This can be an issue when sorting and filtering dates. Review http://allenbrowne.com/ser-36.html
3. Options to calculate count:
SELECT Dates.Dte, (SELECT Count(*) FROM Projects WHERE Dates.Dte Between StartDate And EndDate) AS Cnt FROM Dates;
SELECT Dates.Dte, DCount("*","Projects","#" & [Dte] & "# Between StartDate And EndDate") AS Cnt FROM Dates;
or a VBA custom function
Code:
Function GetCnt(dte As Date) As Integer
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Projects")
Do While Not rs.EOF
GetCnt = GetCnt + IIf(dte >= rs!StartDate And dte <= rs!EndDate, 1, 0)
rs.MoveNext
Loop
End Function