|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
Добрый день Есть данные по сотрудникам, в формате: айди сотрудника, дата и время его сканировки по карточке. Суть в чем: нужно определить, во сколько он пришел на работу и ушел с неё (это просто: min/max по дате-времени), а так же: 1. Сколько раз он выходил за день 2. Сколько времени провёл ВНЕ офиса. Вот пример: 29.04.2016 9:18 29.04.2016 11:46 29.04.2016 11:52 29.04.2016 13:17 29.04.2016 13:23 29.04.2016 15:06 29.04.2016 15:11 29.04.2016 17:36 29.04.2016 17:36 29.04.2016 17:43 29.04.2016 18:05 Каким методом из подобного набора временных значений можно вывести такой расчет, при том что у каждого сотрудника может быть разное кол-во сканировок за день или же их может не быть вовсе. Расчет необходимо сделать в access. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 16:41 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
В таблице нехватает данных. Невозможно для отдельной записи определить, был вход или выход. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 16:43 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
А если попробовать завязать на цикл, который будет отбирать каждую следующую min дату/время? Хотя бы так, только я и в данном варианте не знаю как зациклить правильно запрос через VBA ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 16:45 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
Никакие подобные "игрища" не устранят существующей проблемы. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 16:51 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
В случае с примером диапазона дат выше, результат на выходе хочется получить такой: Скан 1 Скан 2 29.04.2016 9:18 29.04.2016 11:46 29.04.2016 11:52 29.04.2016 13:17 29.04.2016 13:23 29.04.2016 15:06 29.04.2016 15:11 29.04.2016 17:36 29.04.2016 17:36 29.04.2016 17:43 ------ 29.04.2016 18:05 29.04.2016 18:05 Вот как его можно добиться, посредством аксесса? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 16:52 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
b.kryukov, непонятно, особенно 17-36 и 18-05 Скан1Скан229.04.20169:1829.04.201611:4629.04.201611:5229.04.201613:1729.04.201613:2329.04.201615:0629.04.201615:1129.04.201617:3629.04.201617:3629.04.201617:43------29.04.201618:0529.04.201618:05 ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 17:06 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
b.kryukov, где здесь вход, где выход ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 17:06 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, 17-36 - дело в том, что там разница в несколько секунд, просто секунды не видно. Поэтому скан 1 и скан 2 - 17-36 18-05 это последний скан. Он, по сути, в данном случае уже не нужен, т.к. высчитывается первым запросом maxDat. Нужно, чтобы даты в промежутке от наименьшей до наибольшей, отсортировались по принципу: 1. Самая минимальная после первой в первом столбце, а во втором: самая минимальная, после той, которая в первом столбце. 2. Самая минимальная, после даты второго столбца из п1. в первом столбце и во втором: самая минимальная, после той, которая в первом столбце. Ну и т.д. Далее, я уже разберусь как отсеять 18:05 и т.п.. Мне важно построить вывод дат по каждому айди сотрудника в формате выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 17:13 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
b.kryukovрезультат на выходе хочется получить такой Почему именно такой? не вижу логики - причём от слова совсем. Я бы ещё понял, будь так: Вход Выход29.04.2016 9:1829.04.2016 11:4629.04.2016 11:5229.04.2016 13:1729.04.2016 13:2329.04.2016 15:0629.04.2016 15:1129.04.2016 17:36---29.04.2016 17:3629.04.2016 17:4329.04.2016 18:05Но до такого состояния ещё надо довести - отсев ошибочных дубликатов представляет изрядную проблему... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 17:17 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
b.kryukov 17-36 - дело в том, что там разница в несколько секунд, просто секунды не видно . Блин... ну ведь через пост на второй я цитирую нетленное: "Здесь играть, здесь не играть, здесь - жирное пятно. Рыбу заворачивали..." ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 18:57 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
Млин... ну я еще могу понять - поиск. Не те ключевые слова и пр.. Вот вчера буквально писал - хочешь учет рабочего времени? раздеяляй и властвуй. Учитывай время: - астрономическое (для порядку) с достаточной точностью - бухгалтерское - вахтерное http://www.sql.ru/forum/1213144/itogi-nedeli Абсолютно они, конечно все будут совпадать, но диапазоны... Сколько дней проработал сотрудник с т.з. таймера, бухгалтера и вахтера?... Те ж не время, а диапазоны (читай - критерии их отбора важны) Вся эта школьная скамья ведется на встроенные механизмы вычисления разницы дат, но ни как не вкуривает даже хэлп по ним. Нам не нужна точность. Нам важно исключить пробдему рднозначной интерпретации конкретного моента времени с т.з. СУБД. Поэтому - забей на точность, но рекомендую таки ХФТ. Запрети интерактив в разумном зазоре перехода нулей и прочих критичных рубежей - перерывы, пересменка, технологические остановки и пр.. Реши - кардинально!!!!!!!!!!!!!! - задачу синхронизции времени в сети - поеъись для этого с сисадминами. В общем и целрм - построй собственную модель врмени в контексте нужд твоей БД. По определению невозможно добиться равныъ отсчнтов на разных компах. Но добиться единой интерпретации разных отсчетов - вот твоя задача. Транзакции! Выучи и пойми это слово. Все компьютеры в сети должны знать, что данный отсчет признан легитимным. И он един для всех. В рамках твоей модели, конечно.... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 19:25 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
* исключить пробдему рднозначной интерпретации "Исключить проблему НЕоднозначной интерпретации" то бишь: "решить задачу однозначной интерпретации" Хм... Бывает и на старуху прореха... . ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 19:35 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
b.kryukovВ случае с примером диапазона дат выше, результат на выходе хочется получить такой: Скан 1 Скан 2 29.04.2016 9:18 29.04.2016 11:46 29.04.2016 11:52 29.04.2016 13:17 29.04.2016 13:23 29.04.2016 15:06 29.04.2016 15:11 29.04.2016 17:36 29.04.2016 17:36 29.04.2016 17:43 ------ 29.04.2016 18:05 29.04.2016 18:05 Вот как его можно добиться, посредством аксесса? можно, конечно, и посредством аксесса (но задание всёж странное) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.05.2016, 23:02 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
guest_rusimport, Спасибо! То, что нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2016, 09:34 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
Млин... может я чегой-то недосмотрел... Вы, робяты, всерьез обсуждаете именно эту конструкцию? На картинке еще не видна пользовательская ф-ция с вариантами, статиком, неявным лонг-бул )) Не влезла :) Если всерьез - я буду всегда, проходя мимо этого монумента отдавать пионерский салют, а, может даже, и креститься... . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2016, 13:25 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
Да, вот еще... IsMissing - очень кривой костыль. Для себя я его полностью исключил из употребления. А уж на Variant - тем более. Показательно, кстати, что изначально iStartValue позиционировалась вроде как integer, но что-то помешало :) . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2016, 14:37 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
guest_rusimport, Всё работает только при условии наличия одной айди, а у меня 120 сотрудников. Запрос не выполняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 10:03 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
b.kryukovguest_rusimport, Всё работает только при условии наличия одной айди, а у меня 120 сотрудников. Запрос не выполняется. можно обойтись и VBA ... (чтоб "салюты" не отдавали и не крестились) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 14:05 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
guest_rusimport, Спасибо! Теперь все выгружается отлично, по всем сотрудникам. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.05.2016, 16:59 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
А теперь такой вопрос: Есть исходная таблица: Сотрудник / Дата / Время / Действие (вход или выход) / Есть случаи, когда сотрудник совершает выход по скану, а обратный вход - тупит и проходит не сканируясь. Или наоборот, выход без скана, а обратный вход - скан есть. Нужно чтобы в таких случаях, была построена таблица, в которой: 1. Если есть выход, а ближайший по времени вход отсутствует (отсутствуем считается, если после выхода, ближайшее по времени действие - опять выход), то формируется вход, время которого равно выходу. 2. Аналогично п.1, только если есть вход и за ним ближайший вход, то к последнему формируется выход, равный последнему входу. На выходе должно получится: Оригинала, с отсутствующим сканом обратного входа в строке 2 и предварительного выхода, в строке 5: ид Выход Вход 1 8:31:00 8:31:00 1 8:36:00 9:40:00 1 9:39:00 10:48:00 1 10:47:00 11:17:00 1 11:18:00 12:08:00 Должно получится: ид Выход Вход 1 8:31:00 8:31:00 1 8:36:00 8:36:00 1 9:39:00 9:40:00 1 10:47:00 10:48:00 1 11:18:00 11:17:00 1 12:08:00 12:08:00 ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:27 |
|
Сканирование сотрудников
|
|||
---|---|---|---|
#18+
Вот сам формат примера исх.таблицы: ид Time Дата Действие 1 8:31:00 10-май-16 Выход 1 8:31:00 10-май-16 Вход 1 8:36:00 10-май-16 Выход 1 9:39:00 10-май-16 Выход 1 9:40:00 10-май-16 Вход 1 10:47:00 10-май-16 Выход 1 10:48:00 10-май-16 Вход 1 11:17:00 10-май-16 Вход 1 11:18:00 10-май-16 Выход 1 12:08:00 10-май-16 Вход ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2016, 10:31 |
|
|
start [/forum/topic.php?fid=45&msg=39237444&tid=1613491]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 340ms |
total: | 481ms |
0 / 0 |