![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
учет рабочего времени [MSSQL]
vantage10 © (2004-04-22 13:52:00)Никто не пробовал организовать учет рабочего времени на SQL запросе?
vantage10 (2004-04-22 18:03:00) [1]В приципе разобрался, т.е. требовалось примерно это:
SELECT
CAST(SUM(CASE AcNum WHEN 1 THEN -CAST(RegTime AS FLOAT) ELSE CAST(RegTime AS FLOAT) END) AS DateTime)
FROM Table2
Только если в таблице подряд два входа или выхода, или непарные значения, то результат не верен. Как привести таблицу к нормальному виду?
Petr V. Abramov (2004-04-22 17:50:00) [2]> Курдль © (22.04.04 15:55) [16]
> и лаем караульных собак
Лаем караульных бабок :)
Непосредственно учет времени - это 2 таблицы - "двери" и "кто-вошел-вышел-дверь-во-сколько". А вот для постоения выводов из этой информации (во-время - не во-время, по делу или пописать, можно ли писать с 2 до 5 и т.д.) таблиц можно нагородить и 70, и 7, и 107. Зависит от инициативности HR и шибанутости и руководства.
Курдль (2004-04-22 15:55:00) [3]
> Ega23 ©
Ок! С датчиками и лаем караульных собак - мэйбыть и 70 :)))
Ega23 (2004-04-22 15:51:00) [4]История проходов - это как данный субъект (группа субъектов) ХОДИЛИ через точки доступа, точнее какие события возбуждали в ТД.
Графики проходов - фактически это расписания доступа. Допустим, группе лиц назначен круглосуточный проход на территорию объекта в любой день. Это один график. Но большинство народа ходит Понедельник - Пятница с 9:00 до 18:30. В выходные и праздники - сидят дома. Это второй график прохода.
Есть ещё дежурные смены, например 2 дня через 3. Они зациклены на 5 дней независимо от выходных и праздников.
И т.п.
Как показывает практика, реально на объектах используют не более 10-ти графиков прохода, но, теоретически, каждому сотруднику можно составить индивидуальный график прохода.
Anatoly Podgoretsky (2004-04-22 15:47:00) [5]vantage10 (22.04.04 15:32) [7]
Это вообще то не учет рабочего времени, а учет проходов через чтото. Для этой цели структура достаточная. А для ответа на вопрос недостаточно информации, смотри указанную ветку.
vantage10 (2004-04-22 15:47:00) [6]Работать нужно только с одной таблицой
Курдль (2004-04-22 15:44:00) [7]А чем Графики проходовотличаются от История проходов
?
Ega23 (2004-04-22 15:41:00) [8]Для Ega23. В 3 таблицы можно уложиться. 1-ая пользователи, 2-двери, 3-уровни доступа.
Можно. Нормализация 1-го уровня получится.
1. Таблица электронных пропусков.
2. Графики проходов.
3. История проходов
4. Куча справочных таблиц (одних типов блокировок существует 10 штук)
5. Типы датчиков, устройств, турникетов и т.п.
Так что хошь верь, а хошь не верь.
Johnmen (2004-04-22 15:38:00) [9]http://www.delphimaster.ru/cgi-bin/forum.pl?id=1081830855&n=1
Курдль (2004-04-22 15:36:00) [10]Вы определитесь сначала с сущностями модели.
Или, проще говоря, с таблицами БД.
Как минимум 2 уже видно - "Перцы" и "Приходы" (ха-ха).
Если одобряете - бум дальше работать в нужном направлении...
vantage10 (2004-04-22 15:35:00) [11]Для Ega23. В 3 таблицы можно уложиться. 1-ая пользователи, 2-двери, 3-уровни доступа.
vantage10 (2004-04-22 15:32:00) [12]Суть в следующем:
Есть данные по пользователям, во сколько пришел и во сколько пришел. Примерно так:
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|
И так за месяц, и хотелось это сделать в одно запросе с подзапросами на каждого пользователя и на каждый день. Только не знаю как. Разница времени между входом и выходом суммируется, т.е. сколько времени он находился в определенном месте.
Курдль (2004-04-22 15:31:00) [13]
> это около 70-ти разных таблиц
НЕ ВЕРЮ! (с) Станиславский.
Ega23 (2004-04-22 15:27:00) [14]Если в двух словах, то это около 70-ти разных таблиц. Система управления доступом.
Алхимик (2004-04-22 15:22:00) [15]учет рабочего времени
Задача не такая уж тривиальная как кажется на первый взгляд.
Это Вам не просто "время ухода" - "время прихода" = "время работы".
Это учёт всевозможных командировок, отпусков и т.д. Работа сотрудников по персональным планам и графикам, туева хуча отчетов о нарушении трудовой дисциплины, формирование табеля по ГОСТам и многое другое.
Курдль (2004-04-22 14:03:00) [16]Здесь было что-то похожее:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1082543239&n=1
clickmaker (2004-04-22 13:59:00) [17]Утро
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 13:53:00) [18]
> учет рабочего времени на SQL запросе?
это как?