Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.05;
Скачать: CL | DM;

Вниз

контроль временных параметров   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.027 c
1-11868
Tester
2003-12-18 16:13
2004.01.05
О производительности


3-11835
SergP
2003-12-09 22:22
2004.01.05
Не работает like


1-11965
CrazyHacKeRs
2003-12-19 15:37
2004.01.05
Функция удаления символов


3-11825
DiFar
2003-12-08 13:38
2004.01.05
Изменение типа поля


14-12141
panov
2003-12-11 19:18
2004.01.05
Спор спамеров с анитиспамерами.