powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / и опять номера недель
24 сообщений из 24, страница 1 из 1
и опять номера недель
    #39981956
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте, подскажите пожалуйста, существует ли механизм правильной идентификации номера недели в запросе аксесс.
Я пробовал множество рекомендации и с format и с datepart:
format ([дата];"ww")
format ([дата];"ww";0;2)
format ([дата];"ww";3;2)
и так далее...


Не поленился, и проверил критичные даты до 2023 года по рабочему календарю с номерами недель и увидел косяки у всех примеров.
Существует ли четкий алгоритм , который будет строго считать номера недель и не уплывать из года в год?)
...
Рейтинг: 0 / 0
и опять номера недель
    #39981967
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов,

Не много магических чисел ...
Код: vbnet
1.
(clng(date()) - 43983) mod 7


номер недели начинается с 0 - понедельник
...
Рейтинг: 0 / 0
и опять номера недель
    #39981971
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
Стесняюсь спросить:а какие конкретно "косяки" в случае format([myDate];"ww")?
скорее Вы ошибётесь,чем функция.
...
Рейтинг: 0 / 0
и опять номера недель
    #39981973
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот база ,с эталонными номерами недель в таблице, уже проставлены заранее)
Номера недель вставлены с сайта номернедели.рф , чтобы не было соблазна смотреть множество кривых неправильных календарей в яндекс картинках)
Можете побаловаться и сопоставить данные)
...
Рейтинг: 0 / 0
и опять номера недель
    #39981978
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Сергей Лалов,
Стесняюсь спросить:а какие конкретно "косяки" в случае format([myDate];"ww")?
скорее Вы ошибётесь,чем функция.


Можете не стеснятся) вот что выдает format([myDate];"ww") по сравнению с эталонными данными:
...
Рейтинг: 0 / 0
и опять номера недель
    #39981983
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
зря вы ссылаетесь на этот сайт:
1. У буржуев неделя начинается с воскресенья (учтено-это просто)
2.А вот как считается первая неделя на сайте?
возможны варианты:
-Неделя,содержащая 1 января
-Первая неделя,содержащая как минимум 4 дня нового года
-Первая полная неделя года
Я лично не знаю как правильно/надо
По-моему здесь "эталона" нет и быть не может
(Вспомните эпопею с тем какой год считать началом 21 века 2000 или 2001)
...
Рейтинг: 0 / 0
и опять номера недель
    #39981985
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,
Это наш сайт) Российский, стандарт)
...
Рейтинг: 0 / 0
и опять номера недель
    #39981986
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,
Тогда и берите данные с сайта
...
Рейтинг: 0 / 0
и опять номера недель
    #39981990
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дат слишком много, на каждую не наставишься номер недели) Они же участвуют потом в запросе с группировкой)
...
Рейтинг: 0 / 0
и опять номера недель
    #39981992
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111,
Как этим пользоваться?)
...
Рейтинг: 0 / 0
и опять номера недель
    #39981998
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов,

так скопируйте функцию с сайта, делов то....

Код: vbnet
1.
2.
3.
4.
5.
6.
Public Function GetWeek(dDate)
  Dim nfirstJan
  dDate = dDate + 3 - (DatePart("w", dDate, 2) + 6) Mod 7
  nfirstJan = DateSerial(Year(dDate), 1, 4)
  GetWeek = 1 + ((dDate - nfirstJan) - 3 + (DatePart("w", nfirstJan, 2) + 6) Mod 7) \ 7
End Function

...
Рейтинг: 0 / 0
и опять номера недель
    #39982003
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов,

Первый пост не смотрите, он не подходит.
...
Рейтинг: 0 / 0
и опять номера недель
    #39982005
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Swa111,

Спасибо!) Ваш вариант на VBA покороче ,чем есть в сети)

Взял в оборот.
Проверил, ошибок по моему списку не нашел.
...
Рейтинг: 0 / 0
и опять номера недель
    #39982059
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без костылей
Код: vbnet
1.
2.
3.
4.
5.
6.
Private Sub test100()
Const ddate = #12/27/2021#
Dim prov
prov = DatePart("ww", ddate, vbMonday, vbFirstFourDays)
Debug.Print prov
End Sub

...
Рейтинг: 0 / 0
и опять номера недель
    #39982233
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko,

Проверил ваш вариант в разрезе:
Код: sql
1.
..datepart("ww";[дата];2;2) as ном_нед..



По списку значений выдает верные данные. Спасибо и вам!
...
Рейтинг: 0 / 0
и опять номера недель
    #40001754
Фотография dab2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,


Сергей Лалов
alecko,

Проверил ваш вариант в разрезе:
Код: sql
1.
..datepart("ww";[дата];2;2) as ном_нед..




По списку значений выдает верные данные. Спасибо и вам!

А не фига, проверьте
Код: vbnet
1.
DatePart("ww", "2031/12/29", 2, 2)


выдает 53 неделю, а на сайте номернедели.рф и в функции GetWeek = 1!

...я плакаль
...
Рейтинг: 0 / 0
и опять номера недель
    #40001760
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dab2,

Так закрыли уже вопрос. Вот пользуйтесь этой, нормально работает:

Код: vbnet
1.
2.
3.
4.
5.
6.
Public Function GetWeek(dDate)
  Dim nfirstJan
  dDate = dDate + 3 - (DatePart("w", dDate, 2) + 6) Mod 7
  nfirstJan = DateSerial(Year(dDate), 1, 4)
  GetWeek = 1 + ((dDate - nfirstJan) - 3 + (DatePart("w", nfirstJan, 2) + 6) Mod 7) \ 7
End Function
...
Рейтинг: 0 / 0
и опять номера недель
    #40001765
Фотография dab2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

а что там про "магические" числа было? М.б. есть более быстрый метод вычислений?
...
Рейтинг: 0 / 0
и опять номера недель
    #40001774
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня все правильно - если в неделе 4 дня - она становится 1-й, если меньше, она первой не становится - на сайте ошибка в формуле. это обычная вещь.
...
Рейтинг: 0 / 0
и опять номера недель
    #40001781
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko,

Да не, на сайте все верно думаю.
Если в этот вариант более длинный подставить указанную дату, то выдаст правильный номер недели -1.
...
Рейтинг: 0 / 0
и опять номера недель
    #40001784
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов, а если зайти в календарь винды то неделя 53-я.
...
Рейтинг: 0 / 0
и опять номера недель
    #40001787
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko
Сергей Лалов, а если зайти в календарь винды то неделя 53-я.


Не, это не показатель, с чего все и началось. И это печально, потому что несколько раз уже накалывался. На разных настройках винды, календарь как раз и может неверно отображать номер недели. В существующем календаре.
...
Рейтинг: 0 / 0
и опять номера недель
    #40001806
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще странно - такие же данные #12/29/2036#,#12/29/2025# - 1-я неделя. может локализация хромает. если первая неделя вскр - все на 53-й неделе.
...
Рейтинг: 0 / 0
и опять номера недель
    #40001849
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko,
Да, согласен. Хорошо номер недели не фигурирует в каких либо регламентных документах , завязанных на оплату, или что то в этом духе. Я бы поседел в этом случае))
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / и опять номера недель
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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