Информационная система учета и поверки |
Страница 9 из 13
Задача подсчет загруженности сотрудника Цель: рассчитать процент загруженности любого поверяющего исходя из месячной нормы – 168 часов. Решения этой задачи необходимо для равномерного распределения нагрузки между поверяющими. Если загруженность меньше ста процентов, работник не выполняет месячную норму. Загруженность больше ста процентов, говорит о том что на поверяющего наложена слишком большая нагрузка и необходимо пересмотреть план будущих поверок. Для решения этой задачи был написан программный код, выполняемый при нажатии кнопки «Подсчитать загруженность поверяющего». После нажатия кнопки появляется окно, куда пользователь вводит код интересующего его сотрудника. После чего выводиться сообщение с результатом. Если выбранный поверяющий не поверил ниодного прибора за месяц выводится сообщение: «Не выполнял поверок в этом месяце». Если введены неверные данные кода сотрудника, то выводится окно с сведением об ошибке. В этом случае код поверяющего необходимо ввести заново. Подсчет загруженности осуществляется по формуле: общее количество часов поверки за месяц делится на месячную норму (168 часов) и умножается на сто процентов. Рис.12. Задача подсчет загруженности сотрудника. Программный код: Private Sub Кнопка16_Click() Dim dbs As Database Dim tbl As Recordset Dim tbu As Recordset Dim s As Integer Dim k As String Set dbs = CurrentDb Set tbl = dbs.OpenRecordset("Поверка", dbOpenDynaset) Set tbu = dbs.OpenRecordset("Кадры", dbOpenDynaset) If tbl.EOF Then Exit Sub tbl.MoveFirst tbl.MoveLast d = tbl.RecordCount ch = Format(Now, "dd/mm/yy") y = InputBox("введите код поверяющего") If y > 4 Then MsgBox "Неверные данные" k = "Не выполнял поверок в этом месяце" tbl.FindFirst ("Код поверяющего]=" & y) For i = 1 To d dat = tbl![Дата последней поверки] t = tbl![Время поверки] If DateDiff("m", dat, ch, vbMonday) = 1 Then s = s + t Zag = (s * 100) / 168 End If tbl.FindNext ("[Код поверяющего]=" & y) Next i If Zag = 0 Then Zag = k MsgBox k Else Form_Кадры1.Поле17 = Zag MsgBox Zag & "% Загруженность данного сотрудника" End If Form_Кадры1.Поле19 = y tbl.Close Set dbs = Nothing End Sub
|