My thoughts:
(+) For the following I will be working with the first day of the week as Sunday - I'm in the US; thus, this is where I'll start, should be an easy modification to use Monday etc...
(+) Using either a table with 1-53 (or my
Cartesian-product-exapansion-query) limited to either 52 or 53 for the year selected.
I would use the
weeknumber() function given in the ms article and feed it 12/31 for the year from the year combobox and update the week number combobox as in
cascade.
Doing this will make your coding much simpler as one will not have to check for 53 in a 52 year.
(a) Using
first day of the week concept, find the Sunday for the week containing the first of the year for the selected year(for example 2015-12-27 for this year)
(b) feed 1/1/yyyy to WeekNumber() and if this is week one then we have the first Sunday of the year, if not and we're in week 53, then dateadd("ww",1,{SundayStepA}) - this then has to be the first week, thus, the first Sunday of week one.
(for example, using step(a) we get 2015-12-27 for the week containing 2016-01-01, feeding 2016-01-01 in to the WeekNumber() yields 53 so dateadd("ww",1,#12/27/2015#) results in 2016-01-03 which is the Sunday in week one for 2016
(c) dateadd("ww",(cboWeekNum-1),SundayFromStepB) to determine the first Sunday in the week number selected
(d) dateadd("d",6,SundayFromStepC) to determine the Saturday
Anyway, the logic worked in my test database when compared against the website you referenced earlier... of course, it threw me initially as they are using Monday as the first day of the week. :)
There is most likely a simpler method - maybe even one in SQL. I am cautious about using the datepart() for the Bug as given in
Post#2
-Z