Как рассчитать разницу между временами и сохранить результат в базе данных mySQL (VB.NET)?

Я новичок в VB и работаю над проектом по записи сведений о приходе и уходе сотрудников. Я хочу знать, как сделать так, чтобы при нажатии кнопки «часы» время начинало записываться, а при нажатии кнопки «часы» время останавливалось. Кроме того, как только часы будут нажаты, часы между входом и выходом часов будут записаны и сохранены в базе данных mySQL.

Эта информация будет выводиться в DataGrid, показывающую время и дату, когда сотрудник пришел на работу.

Затем количество часов будет умножено на заранее прописанную почасовую оплату... которая уже хранится внутри одной из таблиц в моей базе данных mySQL.

Любая помощь будет оценена по достоинству.


person Thaitan    schedule 27.12.2012    source источник


Ответы (2)


Вы должны сохранить событие вместо результата.

Сохраните время прихода, а также строку времени ухода. Затем вам понадобится процедура либо в вашей базе данных, либо в приложении, которая будет перебирать строки и сопоставлять время входа и время выхода.

Этот подход позволит приложению аварийно завершать работу и перезапускаться без потери данных.

В качестве альтернативы вы можете поместить время входа и выхода в одну и ту же запись (разные столбцы) и просто вставить время выхода в первую строку, которая соответствует сотруднику и нулевому времени выхода.

person Sam Axe    schedule 27.12.2012
comment
Как мне сохранить событие вместо результата? и не могли бы вы объяснить, какую разницу это будет иметь по сравнению с хранением в результате. - person Thaitan; 28.12.2012
comment
часть, выделенная жирным шрифтом, отвечает на вопрос «как». часть, выделенная курсивом, отвечает на вопрос, почему - person Sam Axe; 28.12.2012

Я хотел бы, чтобы кнопка часов In запускала событие в программе, создающее запись для идентификатора сотрудника, который, как я предполагаю, у вас есть в то время.

Затем, когда нажата кнопка «часы», вы запускаете событие, которое отправляется в вашу базу данных и извлекает первую найденную запись с идентификатором сотрудника, который вы ищете, действительные часы во времени и ноль для времени выхода. . Если программа не найдет что-то, что соответствует всем этим критериям, вам придется обрабатывать это так, как вы хотите (я бы выполнял поиск, когда сотрудник входил в систему или что-то еще, и разрешал им доступ к кнопке часов, только если не было записи присутствует и позволяет им использовать кнопку отключения часов только в том случае, если для их идентификатора была найдена запись).

После того, как у вас есть эта запись в памяти, вы должны установить время выхода часов и вычислить разницу, используя часы во времени, которые были записаны в базу данных ранее.

Я бы использовал хранимую процедуру в базе данных для обработки добавления/обновления/управления записью и выполнения всех вычислений и всего, что вы хотите сделать во время входа/выхода часов внутри самой программы. Но я думаю, что это всего лишь предпочтение в отношении того, где происходит фактическая обработка.

Наиболее очевидная причина этого заключается в том, что программа может быть закрыта в промежутке между входом и выходом без каких-либо потерь. Если вы попытаетесь отслеживать все это в памяти, вы потеряете все свои часы, как только программа будет закрыта по какой-либо причине (закрыта вручную / «Завершить задачу» через диспетчер задач / необработанная ошибка).

person Mike_OBrien    schedule 27.12.2012