Форум: "Базы";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Внизконтроль временных параметров Найти похожие ветки
← →
stud (2003-12-08 10:17) [0]все наверное сталкивались с такой проблемой, есть некоторые параметры, которые зависят от даты или времени, например есть срок действия чего-либо (услуги предоставляются с даты и по дату) и по окончании этого срока надо перевести эту услугу в неактивное состояние, чтобы больше ее не использовать - установить признак в 0. как это лучше реализовать, учитывая, что система многопользовательская?
← →
Sergey13 (2003-12-08 10:29) [1]ИМХО, слишком общий вопрос. Ответ - как сможешь, так и делай.
← →
stud (2003-12-08 10:35) [2]если уточнить, то будет так:
есть таблица, в которой содержаться сведения о сроках действия медицинских программ, т.е. услуги по программе оказываются с такого-то числа и по такое-то. вот проблема собственно в том, чтобы при наступлении даты окончания действия программы она переводилась в неактивное состояние.
← →
Anatoly Podgoretsky (2003-12-08 10:37) [3]Так и переведи в неактивное состояние.
← →
stud (2003-12-08 10:44) [4]
> Anatoly Podgoretsky © (08.12.03 10:37) [3]
как всегда, все гениальное - просто!
перевести - это не проблема)) как это реализовать? если при запуске программы проверять все эти вещи, то например все пользователи будут при запуске ломиться на сервер, чтобы выполнить одну и ту же операцию, к томе же кем то уже сделанную. по-моему это не есть хорошо. вот и интересно мнение, может кто встречался с подобной проблемой и есть какие-то реализации?
← →
Sergey13 (2003-12-08 11:30) [5]Ну например если есть две даты - начало и конец - то запись с пустой датой конца - активна, с непустой - архив. Соответственно преписать запросы.
Тут все зависит от логики работы. Можно ли работать "задним числом", есть ли человек отвечающий за "актуальность" данных и т.д. и т.п.
← →
Silver Alex (2003-12-08 11:54) [6]а какой перевод в неактивное состояние если есть две даты, начало и конец действия, разве мало этого?Запрос может просто надо пофиксить.Или я неверно понял
select * from table
where
fromdate<=:OnDate
and (todate>=:OnDate or todate is null)
← →
Desdechado (2003-12-08 12:15) [7]а почему вдруг "ВСЕ пользователи начнут ломиться неактивность изменять"?
Пусть проверяется перед изменением по всем медпрограммам. Как это реализовать, другой вопрос (на клиенте/ах, сервисом, на сервере)...
← →
stud (2003-12-08 12:16) [8]
> Silver Alex © (08.12.03 11:54) [6]
в общем да, но запрос типа select * from table where pr=1 более приятный)). хотя может зря я велосипед придумываю))
← →
stud (2003-12-08 12:19) [9]
> Desdechado © (08.12.03 12:15) [7]
вот. т.е. нужно писать отдельную программку. которая будет постоянно работать на сервере и менять что нужно.
все, спасибо
← →
Danilka (2003-12-08 12:45) [10]
> [8] stud © (08.12.03 12:16)
> в общем да, но запрос типа select * from table where pr=1
> более приятный)). хотя может зря я велосипед придумываю))
какой-же это велосипед? это намного хуже. :))
вообще, что значит "намного приятнее писать"? тебе текст запроса 1 раз в программе написать, и больше его не трогать, так что мог-бы и пересилить себя. :))
в любом случае - луче чем плодить избыточность данных и недостоверность информации.
в крайнем случае, напиши вьюху или ХП, в которой будет доп. поле: pr=1 или 0, и делай селект из нее наздоровье.
← →
Silver Alex (2003-12-08 12:54) [11]
> в общем да, но запрос типа select * from table where pr=1
> более приятный)). хотя может зря я велосипед придумываю))
все данные достаются на дату.Правильно?Ты ведь не напишешь просто "select * from table where pr=1".Когда эта запись "закрыта",например 10.10.2003 ,а мы открываем на 01.10.2003?, в любом случае надо смотреть на дату
← →
stud (2003-12-08 13:10) [12]дело в том, что "просроченые" записи не удаляются, все это дело накапливается т.е. с каждым разом придется проверять даты у все большего количества записей.
а если будет отдельная программка висеть, она например в час ночи проверяет даты и меняет признак с 1 на 0 один. раз т.е. проверка по дате тут отпадает - смотрим по признаку
← →
Danilka (2003-12-08 13:13) [13][12] stud © (08.12.03 13:10)
индексы тебя спасут. :))
какие проблемы? хоть мильен мильенов записей, запрос вот-сдесь:
[6] Silver Alex © (08.12.03 11:54)
отработает очень шустро, если будут индексы по полям с датой. :))
← →
Danilka (2003-12-08 13:13) [14]причем, нисколько не медленнее, чем "select * from table where pr=1".
← →
stud (2003-12-08 14:54) [15]так тут еще одна проблема)) есть программы, у которых срок действия не ограничен, т.е. даты окончания они не имеют, вот тут признак и нужен
← →
Danilka (2003-12-08 14:58) [16]см еще раз:
[6] Silver Alex © (08.12.03 11:54)
select * from table
where
fromdate<=:OnDate
and (todate>=:OnDate or todate is null)
← →
stud (2003-12-08 15:16) [17]возможно...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c