Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как найти время? [D6]


silenser ©   (2002-12-19 14:51:00) 

есть база с полями
таб № вход/выход | дата/время
4444 | вход | 13.12.2002 6:59
4444 | выход | 13.12.2002 12:51
4444 | вход | 13.12.2002 13:59
4444 | выход | 13.12.2002 16:59
5555 | вход | 13.12.2002 6:59
5555 | выход | 13.12.2002 17:02
6666 | вход | 13.12.2002 7:02
8888 | вход | 12.12.2002 17:02
8888 | выход | 13.12.2002 6:59
5555 | вход | 13.12.2002 6:59
5555 | выход | 13.12.2002 17:02
как посчитать сколько времени он пробыл на предприятии???


KoluChi   (2002-12-19 17:48:00) [1]

>sniknik © (19.12.02 17:35)
Вариант, конечно, но все недостатки остались (Johnmen © (19.12.02 15:36))
Но последнее слово все-таки за silenser.


sniknik   (2002-12-19 17:35:00) [2]

зря напали на человека запрос то несложный получается
SELECT First(Tab) AS TabNo, Format(SUM(IIF(INOUT="вход", -Dat, Dat)) ,"h:m:s") AS [Time] FROM JOBERSTIME GROUP BY TAB

структура
CREATE TABLE JobersTime (Id INT IDENTITY(1,1),Tab int, InOut char(10), Dat DateTime)
а вот на каком SQL пусть догадывается, ну и естественно здесь простейшее, если работник провел на заводе века то это правильно, так ему и надо.


KoluChi   (2002-12-19 16:53:00) [3]

Запрос в данном случае, по-моему, не поможет.
Единственный вариант здесь, как предложил Prooksius © (19.12.02 15:12).
Логичнее все-таки было бы хранить информацию в виде:
таб № | дата/время входа | дата/время выхода |


Johnmen   (2002-12-19 16:25:00) [4]

>Подскажите (19.12.02 15:57)
>4.Пункт-записи по порядку

По какому такому порядку ? Что есть мера/признак порядка ?


Подскажите   (2002-12-19 15:57:00) [5]

Я даже знаю откуда.Гребанный Парсек наверное ковыряют.Вот там только первая нормальная форма присутсвует.
4.Пункт-записи по порядку поэтому можно догадться что к чему.


Johnmen   (2002-12-19 15:36:00) [6]

Должен заметить, что задача не совсем тривиальная, т.к. надо учесть :
1) есть запись прихода и нет записи ухода
2) есть запись ухода и нет записи прихода
3) время записи ухода более раннее времени прихода
и самое главное
4) какой записи прихода соответствует какая запись ухода ?

Резюме: ПОЛНОСТЬ пересмотреть структуру БД ! Нормализовать !
И вот тогда вопросов не будет...:)))


Prooksius   (2002-12-19 15:12:00) [7]

Надеюсь, не такого, типа сначала один вошел, потом он же опять вошел? Или сначала вышел, а потом вошел? :))))


var
TabNo: integer;
DateTime: TDateTime;
begin
Query.SQL := "select TabNo, InOut, DateTime from Table1 order by TabNo, DateTime"
Query.Open;
while not Query.EOF do begin
// ну а здесь подумай сам, многое зависит от конкретной ситуации
end;
end;


silenser   (2002-12-19 14:59:00) [8]

по каждому табельному №


silenser   (2002-12-19 14:58:00) [9]

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


Prooksius   (2002-12-19 14:56:00) [10]


> сколько времени он пробыл на предприятии

А кто это? :)))))))


Prooksius   (2002-12-19 14:55:00) [11]

Опять телепатов ищут... Телепаты, АУ!! :)))

Локальная база? IMHO, пробежаться по dataset и посчитать
SQL-база? ХП и также


Johnmen   (2002-12-19 14:54:00) [12]

Написать программу !


Наверх

Титульная страница Поиск, карта сайта Написать письмо