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

Вниз

учет рабочего времени   Найти похожие ветки 

 
vantage10   (2004-04-22 13:52) [0]

Никто не пробовал организовать учет рабочего времени на SQL запросе?


 
Соловьев ©   (2004-04-22 13:53) [1]


> учет рабочего времени на SQL запросе?

это как?


 
clickmaker ©   (2004-04-22 13:59) [2]

Утро
insert into WorkTime(Worker_ID, BeginTime) values(@Worker_ID, getdate())

Вечер
update WorkTime set EndTime = getdate()
where Worker_ID = @Worker_ID

Учет
select datediff(hour, BeginTime, EndTime) as WorkTimeInHours
from WorkTime where Worker_ID = @Worker_ID


 
Курдль ©   (2004-04-22 14:03) [3]

Здесь было что-то похожее:
http://delphimaster.net/view/3-1082543239/


 
Алхимик ©   (2004-04-22 15:22) [4]

учет рабочего времени
Задача не такая уж тривиальная как кажется на первый взгляд.
Это Вам не просто "время ухода" - "время прихода" = "время работы".
Это учёт всевозможных командировок, отпусков и т.д. Работа сотрудников по персональным планам и графикам, туева хуча отчетов о нарушении трудовой дисциплины, формирование табеля по ГОСТам и многое другое.


 
Ega23 ©   (2004-04-22 15:27) [5]

Если в двух словах, то это около 70-ти разных таблиц. Система управления доступом.


 
Курдль ©   (2004-04-22 15:31) [6]


> это около 70-ти разных таблиц

НЕ ВЕРЮ! (с) Станиславский.


 
vantage10   (2004-04-22 15:32) [7]

Суть в следующем:
Есть данные по пользователям, во сколько пришел и во сколько пришел. Примерно так:
Person | Date      | In_Out | Time |
Петров | 15.04.2004| In     | 08:00|
Иванов | 15.04.2004| In     | 08:15|
Петров | 15.04.2004| Out    | 08:40|
Петров | 15.04.2004| In     | 09:10|
Петров | 15.04.2004| Out    | 17:00|
Иванов | 15.04.2004| Out    | 17:15|

И так за месяц, и хотелось это сделать в одно запросе с подзапросами на каждого пользователя и на каждый день. Только не знаю как. Разница времени между входом и выходом суммируется, т.е. сколько времени он находился в определенном месте.


 
vantage10   (2004-04-22 15:35) [8]

Для Ega23. В 3 таблицы можно уложиться. 1-ая пользователи, 2-двери, 3-уровни доступа.


 
Курдль ©   (2004-04-22 15:36) [9]

Вы определитесь сначала с сущностями модели.
Или, проще говоря, с таблицами БД.
Как минимум 2 уже видно - "Перцы" и "Приходы" (ха-ха).
Если одобряете - бум дальше работать в нужном направлении...


 
Johnmen ©   (2004-04-22 15:38) [10]

http://delphimaster.net/view/3-1082543239/


 
Ega23 ©   (2004-04-22 15:41) [11]

Для Ega23. В 3 таблицы можно уложиться. 1-ая пользователи, 2-двери, 3-уровни доступа.

Можно. Нормализация 1-го уровня получится.

1. Таблица электронных пропусков.
2. Графики проходов.
3. История проходов
4. Куча справочных таблиц (одних типов блокировок существует 10 штук)
5. Типы датчиков, устройств, турникетов и т.п.

Так что хошь верь, а хошь не верь.


 
Курдль ©   (2004-04-22 15:44) [12]

А чем Графики проходов отличаются от История проходов
?


 
vantage10   (2004-04-22 15:47) [13]

Работать нужно только с одной таблицой


 
Anatoly Podgoretsky ©   (2004-04-22 15:47) [14]

vantage10   (22.04.04 15:32) [7]
Это вообще то не учет рабочего времени, а учет проходов через чтото. Для этой цели структура достаточная. А для ответа на вопрос недостаточно информации, смотри указанную ветку.


 
Ega23 ©   (2004-04-22 15:51) [15]

История проходов - это как данный субъект (группа субъектов) ХОДИЛИ через точки доступа, точнее какие события возбуждали в ТД.

Графики проходов - фактически это расписания доступа. Допустим, группе лиц назначен круглосуточный проход на территорию объекта в любой день. Это один график. Но большинство народа ходит Понедельник - Пятница с 9:00 до 18:30. В выходные и праздники - сидят дома. Это второй график прохода.
Есть ещё дежурные смены, например 2 дня через 3. Они зациклены на 5 дней независимо от выходных и праздников.
И т.п.
Как показывает практика, реально на объектах используют не более 10-ти графиков прохода, но, теоретически, каждому сотруднику можно составить индивидуальный график прохода.


 
Курдль ©   (2004-04-22 15:55) [16]


> Ega23 ©

Ок! С датчиками и лаем караульных собак - мэйбыть и 70 :)))


 
Petr V. Abramov ©   (2004-04-22 17:50) [17]

> Курдль ©   (22.04.04 15:55) [16]
> и лаем караульных собак
 Лаем караульных бабок :)

 Непосредственно учет времени - это 2 таблицы - "двери" и "кто-вошел-вышел-дверь-во-сколько". А вот для постоения выводов из этой информации (во-время - не во-время, по делу или пописать, можно ли писать с 2 до 5 и т.д.) таблиц можно нагородить и 70, и 7, и 107. Зависит от инициативности HR и шибанутости и руководства.


 
vantage10   (2004-04-22 18:03) [18]

В приципе разобрался, т.е. требовалось примерно это:
SELECT
CAST(SUM(CASE AcNum WHEN  1 THEN -CAST(RegTime AS FLOAT) ELSE CAST(RegTime AS FLOAT) END) AS DateTime)
FROM Table2

Только если в таблице подряд два входа или выхода, или непарные значения, то результат не верен. Как привести таблицу к нормальному виду?



Страницы: 1 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.059 c
6-1080020357
Ламерочек
2004-03-23 08:39
2004.05.16
email


9-1067790741
Unknown user
2003-11-02 19:32
2004.05.16
Оцените возможности 3D OpenGL движка.


4-1080402288
kentavr
2004-03-27 18:44
2004.05.16
SendMESSAGE


6-1079982504
3APA3A
2004-03-22 22:08
2004.05.16
Несколько подключений к одному IP:Port...


1-1083233147
ЁПРСТ
2004-04-29 14:05
2004.05.16
Ответ на запрос системы.