Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
Builder 6

Получить сумму отработанных часов заданного сотрудника за все дни...

30.05.2018, 18:30. Показов 1227. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет
Столкнулся с проблемой, помогите пожалуйста
Есть база данных Access в которой есть таблица Выработка сотрудников
В ней столбик с количеством отработанных часов сотрудников за день
Мне нужно, что бы в поле Edit выводилась сумма отработанных часов сотрудника за все дни
Причем сотрудников таких несколько. Нужно, что бы у каждого сотрудника его часы работы складывались со своими же, а не с чужими.
Не знаю, понятно ли объяснил)) если что, спрашивайте
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.05.2018, 18:30
Ответы с готовыми решениями:

Определить величину заработной платы сотрудника с учетом отработанных часов при заданном окладе.
Создайте Windows-приложение, для решения следующей адачи: Определить величину заработной платы сотрудника с учетом отработанных часов при...

Расчет количества отработанных дней сотрудника на текущий день
Всем добрый день! Помогите пжл рассчитать количество отработанных дней сотрудника на текущий день по графику смен (файл во вложении) и что...

Сумма часов,отработанных сотрудником за месяц
Имеется табель о количестве часов, отработанных десятью сотрудниками в течение месяца. Определить работников, проработавших максимальное и...

16
Модератор
 Аватар для D1973
9911 / 6448 / 2455
Регистрация: 21.01.2014
Сообщений: 27,374
Записей в блоге: 3
31.05.2018, 07:43
Цитата Сообщение от Sergey6 Посмотреть сообщение
понятно ли объяснил
Чтобы было совсем понятно, неплохо было бы структуру этой таблицы видеть...

Добавлено через 53 минуты
Вот минимальный пример, как это можно сделать...
Миниатюры
Получить сумму отработанных часов заданного сотрудника за все дни...  
Вложения
Тип файла: rar Отработанное время.rar (15.3 Кб, 5 просмотров)
0
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
31.05.2018, 14:43  [ТС]
Спасибо
Но вот в чем дело
У меня в таблице время в формате 00:00:00
Просто складывать столбцы я умею, но вот время не получается
Может как-то конвертировать его в формат цифры
Например 17:30 = 5,5
0
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
31.05.2018, 14:51  [ТС]
Вот так выглядит таблица
В программе заносится результат выработки за день в Kol - текстовый формат, а так же в Kol2 - работает с любым форматом и заносится только время, вот только сумма его не считается
Миниатюры
Получить сумму отработанных часов заданного сотрудника за все дни...  
0
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
31.05.2018, 14:58  [ТС]
17:30 должно равняться 17,5. Что-то я перепутал
0
Модератор
 Аватар для D1973
9911 / 6448 / 2455
Регистрация: 21.01.2014
Сообщений: 27,374
Записей в блоге: 3
31.05.2018, 15:29
Цитата Сообщение от Sergey6 Посмотреть сообщение
У меня в таблице время в формате 00:00:00
В общем-то это неверно; никто никогда секунды не считает, да и минуты, как правило, округляются до 30 - часы без изменений, более 30 - +1 час... И при подсчете отработанного времени учитываются только часы.
Цитата Сообщение от Sergey6 Посмотреть сообщение
В программе заносится результат выработки за день в Kol - текстовый формат
Совершенно лишние, избыточные данные...
Одним словом, с Вашей архитектурой БД придется городить трехэтажные костыли... Но это - без меня.
0
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
31.05.2018, 15:37  [ТС]
Просить скинуть таблицу, что бы потом блеснуть своими знаниями
Круто
Ладно, хорошо
Но от вас не требуется переделывать мою БД
она работает так, как этого хочу я
от Вас же мне хотелось бы помощи получить, а не необоснованного умозаключения
Если бы мне не нужны были данные в таблице, я бы их не делал
Согласен, хватило бы и часов
Без секунд
Но я об этом и говорил, что нужно округлить
Или без округления сделать так, что бы заносились только часы
И вместо критики, могли бы и подсказать как мне этого добиться
Спасибо.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
31.05.2018, 16:23
А что, типа TTimeSpan в 6-ом Билдере еще не было? А то посчитать сумму всех часов с точностью до минуты не представляет никакого труда:
C++
1
2
3
4
5
6
7
8
9
    DataSource1->DataSet->First();
    TTimeSpan total = 0;
    while(!DataSource1->DataSet->Eof)
    {
        TTimeSpan tm = TTimeSpan::Parse(DataSource1->DataSet->FieldByName("Tm")->AsString);
        total = total + tm;
        DataSource1->DataSet->Next();
    }
    ShowMessage(String().sprintf("%d:%.2d:%.2d", total.Days * 24 + total.Hours, total.Minutes, total.Seconds));
1
Модератор
 Аватар для D1973
9911 / 6448 / 2455
Регистрация: 21.01.2014
Сообщений: 27,374
Записей в блоге: 3
31.05.2018, 16:41
volvo, я примерно это и имел в виду, когда говорил про костыли... Это в корне неверная концепция - перебирать весь набор данных, да еще и проверку на ходу делать, тот это сотрудник или не тот... Или выбирать все данные по этому сотруднику и, опять же, перебирать весь полученный набор данных на предмет суммирования. При нормально спроектированной таблице вся эта работа укладывается в 2-3 строки SQL-запроса.
0
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
31.05.2018, 16:42  [ТС]
Как-то так
Миниатюры
Получить сумму отработанных часов заданного сотрудника за все дни...  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
31.05.2018, 17:27
Цитата Сообщение от D1973 Посмотреть сообщение
При нормально спроектированной таблице вся эта работа укладывается в 2-3 строки SQL-запроса.
Эти рассуждения оставь лекторам в университетах, которые напрочь оторваны от реалий мира программирования, хорошо? И я, и ты прекрасно знаем, что никогда и нигде не будет идеально спроектированных таблиц и идеально правильных программ с точки зрения той или иной парадигмы. Потому что программы пишутся не ради искусства, и у тебя не бесконечное количество времени на их написание, а "вот это надо исправить, причем лучше всего - еще вчера, а не исправишь - вылетишь отсюда, как пробка".

Sergey6, в таком случае выход один: конвертировать время в секунды, складывать их, и потом секунды - обратно в часы:минуты:секунды, то есть, как-то вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    DataSource1->DataSet->First();
    __int64 secs = 0;
    while(!DataSource1->DataSet->Eof)
    {
        // тут фильтрация, если нужно
        secs += SecondsBetween(StrToTime(DataSource1->DataSet->FieldByName("Tm")->AsString), TDateTime(0));
        DataSource1->DataSet->Next();
    }
 
    int hrs, mns, scs;
    hrs = secs / 3600;
    mns = (secs - (3600 * hrs)) / 60;
    scs = secs - (3600 * hrs) - 60 * mns;
    ShowMessage(String().sprintf("%d:%.2d:%.2d", hrs, mns, scs)); // тот же результат, что и в предыдущем фрагменте кода
1
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
31.05.2018, 17:42  [ТС]
Ругается на SecondBetween
И еще
Вот почему так
Я добавляю в таблицу в столбик время. В Access все хорошо. Время как время. Но когда подключаю Access к Гриду через ADOTable, то ко времени еще и дата прибавляется
Мне кажется это нифиговая такая проблема, так как у меня есть код, который из формата hh:nn:ss делал бы просто hh и получились бы только часы, которые нормально бы считались
Скрины приложил для ясности
Миниатюры
Получить сумму отработанных часов заданного сотрудника за все дни...   Получить сумму отработанных часов заданного сотрудника за все дни...  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
31.05.2018, 17:43
Цитата Сообщение от Sergey6 Посмотреть сообщение
Ругается на SecondBetween
C++
1
#include <DateUtils.hpp>
1
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
31.05.2018, 17:44  [ТС]
Вот этим кодом добавляю время

C++
1
DataModule2->Vr_uh2->FieldByName("Vr_uh")->AsString=StrToTime(FormatDateTime("hh:nn", DateTimePicker3->Time));
0
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
31.05.2018, 17:47  [ТС]
Кажется код должен сработать, но из-за проблем с добавлением в базу времени вылазит такая ошибка
Миниатюры
Получить сумму отработанных часов заданного сотрудника за все дни...  
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33376 / 21500 / 8236
Регистрация: 22.10.2011
Сообщений: 36,895
Записей в блоге: 11
31.05.2018, 18:28
А все потому, что нет у нас хрустального шара. Надо было показывать, не как таблица ВЫГЛЯДИТ, а из чего состоит. Мне неинтересно все возможные комбинации проверять. А у тебя, оказывается, тип поля - не Text, как могло показаться из твоих скриншотов, а DateTime...
1
1 / 1 / 1
Регистрация: 29.11.2017
Сообщений: 29
01.06.2018, 00:14  [ТС]
Я когда пробую, то меняю тип данных
На разные

Добавлено через 3 часа 46 минут
Это чудо заработало
Спасибо большое))
Сейчас бы сделать так, что бы сумма у определенного сотрудника считалась

Добавлено через 27 минут
Все
Сделал
Соединил через параметр таблицы и теперь когда в гриде выбирается нужный сотрудник, считается сумма его отработанных часов
Потратил на это целый день и теперь счастлив
Огромное спасибо volvo
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.06.2018, 00:14
Помогаю со студенческими работами здесь

Определить зарплату работников исходя из тарифа и количества отработанных часов
Постановка задачи В фирме есть 3 участка. На каждом участке может трудиться любой работник. Часовая оплата труда на каждом участке...

Расчитать зарплату госслужащего исходя из количества отработанных часов и почасовой ставки работника
Здравствуйте, ув. программисты. Наткнулся на задачу. Ниже условия: &quot;Необходимо расчитать зарплату госслужащего исходя из...

]Напишите программу, которая запрашивает количество часов, отработанных за неделю, и выводит значения общей сум
Напишите программу, которая запрашивает количество часов, отработанных за неделю, и выводит значения общей суммы начислений, налогов и...

Информация о сотрудниках фирмы включает ФИО, табельный номер, количество отработанных часов за месяц, почасовой тариф
Информация о сотрудниках фирмы включает ФИО, табельный номер, количество отработанных часов за месяц, почасовой тариф. Рабочее время свыше...

Отфильтровать информацию о товарах, поставленных в четные дни и найти все товары поставленные в выходные дни
Помогите плиззз с заданием. 1)Используя расширенный фильтр, отфильтровать информацию о товарах, поставленных в четные дни. 2)Найти все...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru