С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 0
Регистрация: 19.09.2024
Сообщений: 41

Работа с датами

07.08.2025, 22:57. Показов 2263. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане

встала такая задача пока для меня не решимся
-есть таблица код сотрудника дата начала дата окончания
-там идут определенные даты
-как можно сделать проверку что когда я хочу вставить период с по у меня проверялся интервал в уже введенных датах

пример 04.05.2025-20.05.2025 эта дата установлена
я хочу ввести дату с 01.05.2025 по 21-05-2025 должна образоваться ошибка из-за пересечения
если я введу с 01-05-2025 по 03-05-2025 или с 21-05-2025 по 31-5-2025 то они запишутся так как периоды не пересекаются и являются меньше или больше уже имеющихся
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.08.2025, 22:57
Ответы с готовыми решениями:

Работа с датами.
Доброго времени суток уважаемые форумчане! Как посчитать количество дней с "06,01,2010" по...

Работа с датами в отчетах! как реализовать?
Здравствуйте! По сути вопроса, маленькая проблемка. Существует отчет который опирается на запрос,...

Работа с датами?
Добрый день! Мне по работе нужна помощь. Есть таблица с сотрудниками, где хранятся данные о дате...

22
1317 / 535 / 112
Регистрация: 29.03.2016
Сообщений: 1,285
07.08.2025, 23:24
SQL
1
WHERE NOT ((ДатаНачалаНовая BETWEEN ДатаНачала AND ДатаОкончания) OR (ДатаОкончанияНовая BETWEEN ДатаНачала AND ДатаОкончания))
Не?

Добавлено через 2 минуты
Хотя НЕТ, так не отследит вложенные интервалы.
0
08.08.2025, 06:01

Не по теме:

Текст без знаков препинания становится невменяемой мешаниной слов безо всякого смысла. Вот вообще нет никакого желания додумывать самому, что хотел сказать художник своим произведением...

0
Эксперт MS Access
 Аватар для Eugene-LS
12058 / 5843 / 1492
Регистрация: 05.10.2016
Сообщений: 16,429
08.08.2025, 06:49
Цитата Сообщение от Daniyar114220 Посмотреть сообщение
как можно сделать проверку ..
Функция:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Public Function DateRangesTest(vFixedRangeStart, vFixedRangeEnd, vDateTestStart, vDateTestEnd) As Boolean
' Индикатор вхождения одного диапазона в другой
' Возвращает: True | False
'---------------------------------------------------------------------------------------------------
' Аргументы:
'   vFixedRangeStart      = Дата начала фиксированного диапазона (с коим сравниваем)
'   vFixedRangeEnd        = Дата окончания фиксированного диапазона
'   vDateTestStart        = Дата начала тестируемого диапазона
'   vDateTestEnd          = Дата окончания тестируемого диапазона
'---------------------------------------------------------------------------------------------------
Const lNoValueEnd As Long = 999999 ' 999999 = 25.11.4637 !
Dim dRangeStart As Date, dRangeEnd As Date, dStart As Date, dEnd As Date, vVal
'---------------------------------------------------------------------------------------------------
On Error GoTo DateRangesTest_Err
 
' Опционально: Если диапазон отбора не задан
    'If IsNull(vFixedRangeStart) And IsNull(vFixedRangeEnd) Then GoTo DateRangesTest_End
' Опционально: Если Дата начала действия документа и Дата окончания не заданы!
    'If IsNull(vDateTestStart) And IsNull(vDateTestEnd) Then GoTo DateRangesTest_End
    
    dRangeStart = Nz(vFixedRangeStart, 0)
    dRangeEnd = Nz(vFixedRangeEnd, lNoValueEnd)
    dStart = Nz(vDateTestStart, 0)
    dEnd = Nz(vDateTestEnd, lNoValueEnd)
    
' Проверка на Старт после Финиша ! = меняем местами - иначе "не взлетит"!
    If dRangeStart > dRangeEnd Then
        vVal = dRangeStart
        dRangeStart = dRangeEnd
        dRangeEnd = vVal
    End If
    
    DateRangesTest = (dStart <= dRangeEnd) And (dEnd >= dRangeStart)
  
'---------------------------------------------------------------------------------------------------
DateRangesTest_End:
    Exit Function
 
DateRangesTest_Err:
    Err.Clear
    Resume DateRangesTest_End
End Function


Проверка работы:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Dim dFixedRangeStart As Date, dFixedRangeEnd As Date
Dim vDateTestStart As Date, vDateTestEnd As Date
    
    dFixedRangeStart = DateValue("04.05.2025")
    dFixedRangeEnd = DateValue("20.05.2025")
    
    Debug.Print String(80, "-")
    Debug.Print "Диапазон для сверки: 04.05.2025 - 20.05.2025"
    
' 01.05.2025 - 21.05.2025 - Должна образоваться ошибка (If = True)
    vDateTestStart = DateValue("01.05.2025")
    vDateTestEnd = DateValue("21-05-2025")
    Debug.Print "01.05.2025 - 21.05.2025 - " & _
        DateRangesTest(dFixedRangeStart, dFixedRangeEnd, vDateTestStart, vDateTestEnd) & " - Перекрытие" ' = True
 
' 01.05.2025 - 03.05.2025 или ...
    vDateTestStart = DateValue("01.05.2025")
    vDateTestEnd = DateValue("03.05.2025")
    Debug.Print "01.05.2025 - 03.05.2025 - " & _
        DateRangesTest(dFixedRangeStart, dFixedRangeEnd, vDateTestStart, vDateTestEnd) & " - Нет пересечения" ' = False
 
' ...  или 21.05.2025 - 31.05.2025 ... являются меньше или больше уже имеющихся
    vDateTestStart = DateValue("21.05.2025")
    vDateTestEnd = DateValue("31.05.2025")
    Debug.Print "21.05.2025 - 31.05.2025 - " & _
        DateRangesTest(dFixedRangeStart, dFixedRangeEnd, vDateTestStart, vDateTestEnd) & " - Нет пересечения" ' = False
 
' Пересечение слева:
    vDateTestStart = DateValue("03.04.2025")
    vDateTestEnd = DateValue("06.05.2025")
    Debug.Print "03.04.2025 - 06.05.2025 - " & _
        DateRangesTest(dFixedRangeStart, dFixedRangeEnd, vDateTestStart, vDateTestEnd) & "  - Пересечение слева"  ' = True
    
' Пересечение справа:
    vDateTestStart = DateValue("19.05.2025")
    vDateTestEnd = DateValue("31.05.2025")
    Debug.Print "19.05.2025 - 31.05.2025 - " & _
        DateRangesTest(dFixedRangeStart, dFixedRangeEnd, vDateTestStart, vDateTestEnd) & "  - Пересечение справа" ' = True
Вернёт:
Visual Basic
1
2
3
4
5
6
7
--------------------------------------------------------------------------------
Диапазон для сверки: 04.05.2025 - 20.05.2025
01.05.2025 - 21.05.2025 - True - Перекрытие
01.05.2025 - 03.05.2025 - False - Нет пересечения
21.05.2025 - 31.05.2025 - False - Нет пересечения
03.04.2025 - 06.05.2025 - True  - Пересечение слева
19.05.2025 - 31.05.2025 - True  - Пересечение  справа


Добавлено через 9 минут
Цитата Сообщение от Jamaica Посмотреть сообщение
Не?
SQL
1
... WHERE NOT ((ДатаНачалаНовая <= ДатаОкончания) AND (ДатаОкончанияНовая >= ДатаНачала))
Добавлено через 8 минут

Не по теме:

Цитата Сообщение от D1973 Посмотреть сообщение
Текст без знаков препинания становится невменяемой мешаниной слов безо всякого смысла.
Согласен!
Daniyar114220, пост у вас далеко не первый, значит уже не волнуетесь. Так куда торопитесь???
Вас сложно читать - насилу понял что вы хотите.

0
08.08.2025, 06:53

Не по теме:

Цитата Сообщение от Eugene-LS Посмотреть сообщение
сложно читать - насилу понял что вы хотите
Добрый Вы человек. У меня доброты не хватает, вникать в смысл таких постов.

0
Эксперт MS Access
 Аватар для Eugene-LS
12058 / 5843 / 1492
Регистрация: 05.10.2016
Сообщений: 16,429
08.08.2025, 07:11
D1973 ... а если снова, то в следующий раз напишу ув. Daniyar114220 так:
Visual Basic
1
2
3
4
5
6
7
8
Public Function DateRangesTest(vFixedRangeStart, vFixedRangeEnd, vDateTestStart, vDateTestEnd) As Boolean
Const lNoValueEnd As Long = 999999: Dim dRangeStart As Date, dRangeEnd As Date, dStart As Date, dEnd As Date, vVal
dRangeStart = Nz(vFixedRangeStart, 0): dRangeEnd = Nz(vFixedRangeEnd, lNoValueEnd)
dStart = Nz(vDateTestStart, 0): dEnd = Nz(vDateTestEnd, lNoValueEnd)
If dRangeStart > dRangeEnd Then: vVal = dRangeStart: dRangeStart = dRangeEnd: dRangeEnd = vVal
If dStart > dEnd Then: vVal = dStart: dStart = dEnd:
DateRangesTest = (dStart <= dRangeEnd) And (dEnd >= dRangeStart)
End Function
... и представьте себе (!!!) - в таком виде работает!
0
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
08.08.2025, 08:32
Цитата Сообщение от Eugene-LS Посмотреть сообщение
в следующий раз напишу

Цитата Сообщение от Eugene-LS Посмотреть сообщение
в таком виде работает!
да компилятору-то по барабану наши отступы и переносы строк. Он их, все одно, игнорирует...

Но вот люди - не компиляторы и, как мне кажется, отсутствие смыслового разбиения текста на части, используя знаки препинания, есть просто неуважение к тем, кто будет такие тексты читать.
0
ᴁ ©
Эксперт MS Access
 Аватар для АЕ
4140 / 2434 / 503
Регистрация: 13.12.2016
Сообщений: 8,277
Записей в блоге: 5
08.08.2025, 08:34
Цитата Сообщение от Eugene-LS Посмотреть сообщение
и представьте себе (!!!) - в таком виде работает!
еще и через Обфускацию пропустить и будет шедевр!
0
0 / 0 / 0
Регистрация: 19.09.2024
Сообщений: 41
08.08.2025, 08:44  [ТС]
Только как я понял что тут нужно самому задавать диапазон а как его брать уже из кода сотрудника и его дат которые уже там присутствуют
0
Эксперт MS Access
 Аватар для Eugene-LS
12058 / 5843 / 1492
Регистрация: 05.10.2016
Сообщений: 16,429
08.08.2025, 08:59
Цитата Сообщение от Daniyar114220 Посмотреть сообщение
а как его брать уже из кода сотрудника и его дат которые уже там присутствуют
Дату(ты) из кода сотрудника ???!!!
...
Вы не умеете использовать данные форм (таблиц) в качестве аргументов функций?
0
Эксперт MS Access
 Аватар для Eugene-LS
12058 / 5843 / 1492
Регистрация: 05.10.2016
Сообщений: 16,429
08.08.2025, 09:05
Цитата Сообщение от Daniyar114220 Посмотреть сообщение
а как его брать
Вах! Э... - Пример ниже ... Да!
Вложения
Тип файла: zip Диапазоны_v004.zip (42.9 Кб, 14 просмотров)
0
Мы один, давай на "ты"
3836 / 1382 / 343
Регистрация: 16.06.2016
Сообщений: 3,273
08.08.2025, 20:01
Daniyar114220, можно установить CONSTRAINT CHECK
коротенько

CHECK constraint — это тип ограничения целостности в SQL, который указывает требование, которое должно быть выполнено для каждой строки в таблице базы данных.
Он ограничивает диапазон или набор значений, которые можно вставить в столбец, и гарантирует, что данные, введённые в столбец, соответствуют определённому условию или правилу

пример решения -- checking_intervals.zip
0
Мы один, давай на "ты"
3836 / 1382 / 343
Регистрация: 16.06.2016
Сообщений: 3,273
08.08.2025, 20:04
ЗЫ. В примере считается пересечением в том числе если дата начала и/или конца совпадают у интервалов
0
0 / 0 / 0
Регистрация: 19.09.2024
Сообщений: 41
24.08.2025, 21:46  [ТС]
Подскажите а диапазоны он может брать для конкретного человека который уже есть в таблице?
0
 Аватар для VinniPuh
9126 / 6126 / 593
Регистрация: 27.03.2013
Сообщений: 19,968
26.08.2025, 17:43
Цитата Сообщение от Daniyar114220 Посмотреть сообщение
...а диапазоны он может брать для конкретного человека...
Запросом с группировкой ни разу не пользовались?
А так по умному, нужно выкладывать пример с десятком примерных данных, на котором вам расскажут, покажут, покритикуют, посоветуют, а то и скорее всего сделают нужную хотелку.
Создавать уже созданный пример, а потом несколько раз его переделывать под ваш пример, мало кто захочет.
0
0 / 0 / 0
Регистрация: 19.09.2024
Сообщений: 41
27.08.2025, 19:51  [ТС]
VinniPuh, в образце считается в ручную по датам так можно и глазами пересмотреть а если нужно проверить 2000 дат среди 100000 дат и пересекается ли у определенного человека суть в этом то вот смотрите есть код сотрудника и две даты в эксель, есть код сотрудника и 10 дат в аксес так вот как сделать что при вставки с эксель выбивало ошибку извините период был ранее
0
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
05.09.2025, 07:08
Цитата Сообщение от Daniyar114220 Посмотреть сообщение
датам так можно
Цитата Сообщение от Daniyar114220 Посмотреть сообщение
сделать что при вставки
Я есть тебя не понимайт даниияродинодинчетыредвадваноль
0
 Аватар для VinniPuh
9126 / 6126 / 593
Регистрация: 27.03.2013
Сообщений: 19,968
05.09.2025, 12:54
Цитата Сообщение от alvk Посмотреть сообщение
...Я есть тебя не понимайт...
Видимо ты плохо в Погранвойсках служил.
Я и то, почти больше половины понял.
Но без примера лень помогать по расчету выслуги, даже для военных как данный ТС.
Если уж ему лень выложить пример, то создавать пример с нуля, возможным помогающим и подавно в лом.
1
Эксперт MS Access
 Аватар для Eugene-LS
12058 / 5843 / 1492
Регистрация: 05.10.2016
Сообщений: 16,429
05.09.2025, 16:44
Цитата Сообщение от VinniPuh Посмотреть сообщение
Видимо ты плохо в Погранвойсках служил.
И тюркских наречий вы не знаете, а это основы английского и итальянского, французского языков.

Добавлено через 1 минуту
Daniyar114220, пишите на языке который вы знаете, Русский не ваш вариант ...
В Туркмении, например, в ходу, хорошо знакомый, северо-голландский - не стесняйтесь!
Южно -Голландский - это почти французский (азербайджанский) - сложнее, но разберёмся.

Азербайджанский = отец всех европейских языков!
0
0 / 0 / 0
Регистрация: 19.09.2024
Сообщений: 41
06.09.2025, 08:16  [ТС]
Вот пример базы извините немного проблематично выкладывать так как военные
Вложения
Тип файла: rar ОК пустая.rar (8.06 Мб, 28 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.09.2025, 08:16
Помогаю со студенческими работами здесь

Работа с Датами
Пытаюсь добавлять даты в следующем формате: #01/06/2004#. В базе первые два числа переставляются...

Работа с датами в Аксессе.
Задача следующая. Есть столбец, формата Дата/время. В нем хранится время начала работы. Дальше на...

Oracle 9i - работа с датами
Только начинаю работать с Oracle'ом. Так что заранее прошу прощения... НО: Вот к примеру кусочек...

Работа с датами
Привет друзья! Пару лет назад (только начинал осваивать ACCESS) в одной базе нужно было...

Работа с датами в SQL Server 2005
Привет всем... У мя тут есть такая проблема... Я написал следующий запрос: DECLARE @qwe...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru