This is an interesting problem. I wonder if you could have 3 parameters.
1. Report type (1=weekly, 2=monthly etc)
2. Sequence (a number to represent which week, or month or quarter etc)
3. Year
You might have to edit the parameters to make sure someone didn't put month 14 or week 55.
if report type = 1
calculate the begin and end date of the appropriate week in the year
(I think you already have this)
else
if report type = 2
calculate the begin and end date of the appropriate month in
the year
else
if report type = 3
calculate the begin and end date of the appropriate quarter in
the year
else
etc.........................
The problem with this is that it might be a bit tricky to calculate the beginning and ending dates. I think you already figured out how to do the weekly dates. If you can calculate those, you can use the begin and end date in your query to select the records you want.
Sorry I don't have an exact solution for you.