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

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

Учет времени [D6, Win2k]


Страницы:   1 2

Pashkerton ©   (2004-10-13 13:11:00) 

Добрый день.
На SQL Server-e есть следующая таблица:
| cardcode | action | date | time |
где: cardcode - код сотрудника
    action - событие (0-сотрудник ушел, 1-сотрудник пришел)
    date - дата событи action
    time - время события action
За один день сотрудник может несколько раз прийти на работу и уйти. Число приходов и уходов должно быть одинаковым. Отсюда вопрос - каким алгоритмом организовать поиск 'коллизий', если человек допустим лишний раз отметился, или вообще забыл отментится.


Pashkerton   (2004-10-13 14:43:00) [21]

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


Reindeer Moss Eater   (2004-10-13 14:43:00) [22]

А что вообще мы хотим узнать написав какой-то запрос?
На работе ли человек или уже дома?
Цель-то какая?

Число приходов и уходов должно быть одинаковым.

А типа без SQL сервера человек запутается и дважды уйдет с работы, придя на нее всего один раз.

Какая цель?


Ega23   (2004-10-13 14:40:00) [23]

TimeToStr(StrToDateTime('13.10.2004 23:30:39') - StrToDateTime('14.10.2004 00:10:29'));

А нафига так сложно????? И, кстати, нафига в таблице 2 разных поля date и time? Можно же одним datetime обойтись...


Johnmen   (2004-10-13 14:38:00) [24]

>jack128 ©   (13.10.04 14:23) [10]

День здесь непринципиален.
Просто решение, которое ты привел, неверно, т.к. сотрудник может отметиться два раза подряд при входе и два раза при выходе. Это коллизия. Даже две. А ты не ловишь...:)


Pashkerton   (2004-10-13 14:35:00) [25]

Да сколько бы он не просидел, хоть даже заполночь. В Delphi замечательно работает следующее:
TimeToStr(StrToDateTime('13.10.2004 23:30:39') - StrToDateTime('14.10.2004 00:10:29'));


Pashkerton   (2004-10-13 14:26:00) [26]


> Johnmen

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


jack128   (2004-10-13 14:23:00) [27]

Ega23 ©   (13.10.04 14:08) [8]
Тогда вы сначала дайте определение, что такое РАБОЧИЙ ДЕНЬ  ;-)


Pashkerton   (2004-10-13 14:17:00) [28]

Ха - ха - ха ))
Да собственно не так уж там всё и сложно. Я сейчас в розысках новых решений. Работающая программа есть, тока она на VBA. Я перешел на SQL 2000. Теперь делаю всё красиво.


Ega23   (2004-10-13 14:08:00) [29]

2 jack128 ©   (13.10.04 13:34) [6]
Ага, а если он заполночь засиделся? Или в ночную смену работает?
Поверь там далеко не всё просто.


Johnmen   (2004-10-13 13:55:00) [30]

>если человек допустим лишний раз отметился,

Это понятно.

>или вообще забыл отментится.

А это прикольно... Чел на работе, а следов в таблице об этом нет.
:)


jack128   (2004-10-13 13:34:00) [31]

Количество приходов = select count(*) from table where action = 1 and cardcode = :cardcode and date = :date
Количество уходов = select count(*) from table where action = 0 and cardcode = :cardcode and date = :date
и сравнивай.

Если бы уход кодировался -1 , то можно было бы проще
select sum(action) from cardcode = :cardcode and date = :date  Если не равно нулю, то коллизия.


Ega23   (2004-10-13 13:30:00) [32]

А не Полярные Зори, случайно?   :о)


Pashkerton   (2004-10-13 13:26:00) [33]

Гораздо проще. Апатиты.


Ega23   (2004-10-13 13:24:00) [34]

Мурманск? Билибино?


Pashkerton   (2004-10-13 13:15:00) [35]

Скажем так, за полярным кругом...


Ega23   (2004-10-13 13:12:00) [36]

Гы-ы-ы... Знаем-знаем...
В какой конторе работаешь, конкурент?


Страницы:   1 2

Наверх

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