The way I would typically do this is to include an OR clause in my SQL query such as
AND (PROJECT = @project OR @project IS NULL)
AND (LOCATION = @location OR @location IS NULL)
AND (AREA= @area OR @area IS NULL)
As far a grouping goes, as long as Project is a field in your dataset you should be able to group on it even if it is left empty in your parms.