номер недели в месяце

Galogen
Дата: 29.09.2005 17:33:47
Как найти номер недели в месяце?
Что у меня есть: номера недель по порядку, начиная с 1 января 1,2,3,5...48,49...
надо как - нибудь получить какой неделей в месяце являеться к примеру Nя неделя...

Спасибо.
АлексейЕ
Дата: 29.09.2005 17:52:45
?DatePart("ww", #10/01/05#, 2)
 40 
?DatePart("ww", #09/30/05#, 2)
 40 
И к какому месяцу считать 40 неделю?
Galogen
Дата: 29.09.2005 18:01:24
5 я неделя сентября (неполная)
1 неделя октября (неполная)
глупыйглупый
Дата: 29.09.2005 18:25:25
номер недели минус номер недели первого числа запрошенного месяца
?
Galogen
Дата: 29.09.2005 18:55:57
точно... Сенкс.....
Что то сглупил.... ответ то на поверхности
Galogen
Дата: 29.09.2005 19:04:40
если кому интересно

Public Function week_now(D As Date) As String
Dim N As Integer
Dim E As Integer
E = DatePart("ww", DateSerial(year(D), Month(D), 1))
N = DatePart("ww", D)
week_now = N - E + 1
End Function
yavorsky90
Дата: 01.06.2010 01:33:44
Есть похожая задача, но сам решить не могу. Как вывести номера недель в году всех недель какого-то месяца.

Как я понимаю, это должна быть функция, которая из введенных пользователем года и номера месяца в году выводит номера всех недель месяца в году. Причем неполные недели также надо учитывать. Например, если выбрать август 2010 года, то функция должна вывести номера в году ШЕСТИ недель этого месяца.

Первой в году нужно считать неделю, которая содержит как минимум 4 дня.

Буду благодарен за идеи.
СавсемГость
Дата: 01.06.2010 02:26:58
yavorsky90,
по аналогии с
глупыйглупый
номер недели минус номер недели первого числа запрошенного месяца
?

Function WeeksOfMonth(myYear%, myMonth%, _
                      Optional FirstWOY% = vbFirstFourDays, _
                      Optional FirstDOW% = vbMonday)
Dim startMonthW%, endMonthW%, dt#
  dt = DateSerial(myYear, myMonth, 1)
  
  startMonthW = DatePart("ww", dt, FirstDOW, FirstWOY)
  endMonthW = DatePart("ww", DateAdd("m", 1, dt) - 1, FirstDOW, FirstWOY)
  
  For k = startMonthW To endMonthW
      Debug.Print k
      'как Вам удобнее выводить - решайте сами
  Next k
End Function
ЗЫ: насчет шести недель в августе 2010-го: верно только если первым днем недели считать Пн или Вт
mds_world
Дата: 01.06.2010 08:55:56
Можно только запросом, без ВБА
select q.n as НомерНедели
from (select (d1.digit & d0.digit) + 1 as  n from Digits AS d0, Digits AS d1) q
Where q.n between DatePart("ww", Dateserial(God, Mes,1),2,2) and DatePart("ww", Dateserial(God, Mes+1,0),2,2)
Здесь Digits это запрос, автор Bonim (см. по форуму), God, Mes вводимые значения года и месяца

Вместо запроса Digits, можно использовать любую таблицу с непрерывным счетчиком от 1 до 53.
mds_world
Дата: 01.06.2010 09:50:31
mds_world
Вместо запроса Digits, можно использовать любую таблицу с непрерывным счетчиком от 1 до 53.
Не совсем правильно. Надо:
вместо подзапроса q, можно использовать любую таблицу с непрерывным счетчиком от 1 до 53.