Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];
Внизучет рабочего времени Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.041 c