Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

контроль временных параметров [D7, IB6.x]


stud ©   (2003-12-08 10:17:00) 

все наверное сталкивались с такой проблемой, есть некоторые параметры, которые зависят от даты или времени, например есть срок действия чего-либо (услуги предоставляются с даты и по дату) и по окончании этого срока надо перевести эту услугу в неактивное состояние, чтобы больше ее не использовать - установить признак в 0. как это лучше реализовать, учитывая, что система многопользовательская?


stud   (2003-12-08 15:16:00) [1]

возможно...


Danilka   (2003-12-08 14:58:00) [2]

см еще раз:
[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 14:54:00) [3]

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


Danilka   (2003-12-08 13:13:00) [4]

причем, нисколько не медленнее, чем "select * from table where pr=1".


Danilka   (2003-12-08 13:13:00) [5]

[12] stud © (08.12.03 13:10)
индексы тебя спасут. :))
какие проблемы? хоть мильен мильенов записей, запрос вот-сдесь:
[6] Silver Alex © (08.12.03 11:54)
отработает очень шустро, если будут индексы по полям с датой. :))


stud   (2003-12-08 13:10:00) [6]

дело в том, что "просроченые" записи не удаляются, все это дело накапливается т.е. с каждым разом придется проверять даты у все большего количества записей.
а если будет отдельная программка висеть, она например в час ночи проверяет даты и меняет признак с 1 на 0 один. раз т.е. проверка по дате тут отпадает - смотрим по признаку


Silver Alex   (2003-12-08 12:54:00) [7]


> в общем да, но запрос типа select * from table where pr=1
> более приятный)). хотя может зря я велосипед придумываю))

все данные достаются на дату.Правильно?Ты ведь не напишешь просто "select * from table where pr=1".Когда эта запись "закрыта",например 10.10.2003 ,а мы открываем на 01.10.2003?, в любом случае надо смотреть на дату


Danilka   (2003-12-08 12:45:00) [8]


> [8] stud © (08.12.03 12:16)
> в общем да, но запрос типа select * from table where pr=1
> более приятный)). хотя может зря я велосипед придумываю))


какой-же это велосипед? это намного хуже. :))
вообще, что значит "намного приятнее писать"? тебе текст запроса 1 раз в программе написать, и больше его не трогать, так что мог-бы и пересилить себя. :))
в любом случае - луче чем плодить избыточность данных и недостоверность информации.

в крайнем случае, напиши вьюху или ХП, в которой будет доп. поле: pr=1 или 0, и делай селект из нее наздоровье.


stud   (2003-12-08 12:19:00) [9]


> Desdechado © (08.12.03 12:15) [7]

вот. т.е. нужно писать отдельную программку. которая будет постоянно работать на сервере и менять что нужно.
все, спасибо


stud   (2003-12-08 12:16:00) [10]


> Silver Alex © (08.12.03 11:54) [6]

в общем да, но запрос типа select * from table where pr=1 более приятный)). хотя может зря я велосипед придумываю))


Desdechado   (2003-12-08 12:15:00) [11]

а почему вдруг "ВСЕ пользователи начнут ломиться неактивность изменять"?
Пусть проверяется перед изменением по всем медпрограммам. Как это реализовать, другой вопрос (на клиенте/ах, сервисом, на сервере)...


Silver Alex   (2003-12-08 11:54:00) [12]

а какой перевод в неактивное состояние если есть две даты, начало и конец действия, разве мало этого?Запрос может просто надо пофиксить.Или я неверно понял

select * from table
where
fromdate<=:OnDate
and (todate>=:OnDate or todate is null)


Sergey13   (2003-12-08 11:30:00) [13]

Ну например если есть две даты - начало и конец - то запись с пустой датой конца - активна, с непустой - архив. Соответственно преписать запросы.
Тут все зависит от логики работы. Можно ли работать "задним числом", есть ли человек отвечающий за "актуальность" данных и т.д. и т.п.


stud   (2003-12-08 10:44:00) [14]


> Anatoly Podgoretsky © (08.12.03 10:37) [3]

как всегда, все гениальное - просто!
перевести - это не проблема)) как это реализовать? если при запуске программы проверять все эти вещи, то например все пользователи будут при запуске ломиться на сервер, чтобы выполнить одну и ту же операцию, к томе же кем то уже сделанную. по-моему это не есть хорошо. вот и интересно мнение, может кто встречался с подобной проблемой и есть какие-то реализации?


Anatoly Podgoretsky   (2003-12-08 10:37:00) [15]

Так и переведи в неактивное состояние.


stud   (2003-12-08 10:35:00) [16]

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


Sergey13   (2003-12-08 10:29:00) [17]

ИМХО, слишком общий вопрос. Ответ - как сможешь, так и делай.


Наверх

Титульная страница Поиск, карта сайта Написать письмо