Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.037 c
3-1082654306
ИМХО
2004-04-22 21:18
2004.05.16
Как создать базу данных Access через ADO?


3-1081404801
ev
2004-04-08 10:13
2004.05.16
Как передать текст из edit в SQL запрос?


4-1080284661
nuflin
2004-03-26 10:04
2004.05.16
Подскажите, какие значения должны быть присвоены переменным в


4-1079960071
Dr.Karter
2004-03-22 15:54
2004.05.16
Результат от процесса


1-1083040171
фыва
2004-04-27 08:29
2004.05.16
Динамический массив





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский