Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как по-проще по номеру недели определить дату ее начала и окончания? / 6 сообщений из 6, страница 1 из 1
26.01.2004, 12:10
    #32387551
Alex112
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по-проще по номеру недели определить дату ее начала и окончания?
Собственно, весь вопрос. Подскажите, пожалуйста, а то у самого какой-то огород получается ...
...
Рейтинг: 0 / 0
26.01.2004, 12:18
    #32387566
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по-проще по номеру недели определить дату ее начала и окончания?
Не самый красивый вариант, но вроде работающий:

CDate(DateSerial(год,1,1)+7*неделя-10)
CDate(DateSerial(год,1,1)+7*неделя-4)
...
Рейтинг: 0 / 0
26.01.2004, 12:30
    #32387589
Alex112
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по-проще по номеру недели определить дату ее начала и окончания?
Владимир Саныч,

спасибо, работает. Но тут нужно обработать ситуации для первой и последней недели года, так чтобы не залезть, соответственно на предыдущий или следующий год. Что-то мне подсказывает, что можно получить нужные даты сразу, без проверки этих двух исключений.
...
Рейтинг: 0 / 0
26.01.2004, 12:57
    #32387639
\/ig
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по-проще по номеру недели определить дату ее начала и окончания?
date - weekday(date) +1
date-weekday(date) +7
...
Рейтинг: 0 / 0
26.01.2004, 13:15
    #32387675
Alex112
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по-проще по номеру недели определить дату ее начала и окончания?
Пока сделал так, взяв за основу вариант Владимир Саныча, и ввел проверки о которых говорил выше. Может кому пригодится:

Dim WeekStart As Date 'Дата начала недели
Dim WeekEnd As Date 'Дата окончания недели

Sub WeekStartEnd(N As Long)
'N - порядковый номер недели в году
WeekStart = CDate(DateSerial(Year(Date), 1, 1) + 7 * N - 10)
If Year(WeekStart) < Year(Date) Then
WeekEnd = WeekStart + 6 + #11:59:59 PM#
WeekStart = DateSerial(Year(Date), 1, 1)
Else
If Year(WeekStart + 6) > Year(Date) Then
WeekEnd = DateSerial(Year(Date), 12, 31) + #11:59:59 PM#
Else
WeekEnd = WeekStart + 6 + #11:59:59 PM#
End If
End If
End Sub
...
Рейтинг: 0 / 0
27.01.2004, 13:09
    #32388965
(c)VIG
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как по-проще по номеру недели определить дату ее начала и окончания?
Несколько экстравагантный способ :), но может быть кому-нибуть пригодится.
Код: plaintext
1.
2.
3.
4.
5.
SELECT datepart( "ww" ,dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n) AS  WeekNumber,
        min(dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n) AS FirstWeekDay,
        max(dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n) AS LastWeekDay
FROM Nums AS a, Nums AS b, Nums AS c
WHERE year(dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n )=year(date())
GROUP BY datepart( "ww" ,dateserial(year(date()), 1 , 1 ) +  100 *c.n+ 10 *b.n+a.n)

Где Nums - вспомогательная таблица с числами от 0 до 9
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как по-проще по номеру недели определить дату ее начала и окончания? / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]