All valid points. the tblSchedulePlanPhase was in the original so I used it trying to minimize how much I changed it knowing that would mean I would need to have even more changes in the SQL which I am even less familiar with. Honestly since I am not having the user select or type the Phase in the Milestones section then I think tblSchedulePlanPhase could be removed.
So on tblProjectDetails the third column for PhaseID is the current phase they are in. So they just manually change that throughout the project. Right or wrong that is how it is different than the milestone phases where they enter the dates. The alternative could be possibly having that just display the phase based on the dates they entered.
I have been working on too many version of this and I think I saved over the one where I used the UNION select code you showed me to calculate the end date. It seems that may be a bit more difficult with the way tblSchedulePlan is set up.