проверить конфликт между двумя datetimepicker

1

Поэтому я делаю простую систему бронирования, С# и sql. У меня есть datetimepicker 1 и datetimepicker 2. Напр. datetimepicker = aug 1 2009 и datetimepicker2 = aug 3 2009 сохранено в sql пользователем.

Что делать с тем, чтобы следующий клиент, который попытался получить дату 1-3, был вынужден выбрать другую дату?

Теги:

1 ответ

0

Вы можете запустить такой запрос, как этот:

select count(*) as cnt
from reservations t
where
not 
(

    (@dtTo <= t.DateFrom)

    or

    (@dtFrom >= t.DateTo)

)

предполагая, что @dtFrom, @dtTo - это даты, выбранные вторым пользователем, и предполагающие
у вас есть таблица reservations с DateFrom и DateTo.

  • Если этот запрос возвращает 0, разрешите второму пользователю сохранить.
  • Если он возвращает число> 0, то не разрешайте второму пользователю сохранять.

Какова идея этого:
два сегмента времени [dateFrom1, dateTo1] и [dateFrom2, dateTo2] не являются
(т.е. не перекрываются) для этого сценария, основанного на резервировании, тогда и только тогда, когда:
dateTo1 <= dateFrom2 or dateFrom1 >= dateTo2
(нарисуйте его на листе бумаги, и вы поймете, почему).
Итак, если отрицание
not ( dateTo1 <= dateFrom2 or dateFrom1 >= dateTo2 )
верно, два сегмента перекрываются/конфликтуют.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню