Я пытаюсь создать цикл VBA, который будет проходить через набор заказов.Для каждого заказа у меня есть продолжительность в часах.Для каждой записи добавляется продолжительность к дате начала и создается время даты окончания.Время конечной даты будет временем начальной даты следующей записи и т. Д.
У меня это работает с использованием функции dateadd
, но это предполагает, что производство происходит 24 часа в сутки.
Как я могу указать, что мы работаем, например, только 12 часов в день, поэтому любая работа, которая выходит за рамки, скажем, 7 вечера, будет распространяться на следующий день?
Я пытался использоватьdateadd
в цикле, и это работает, но я не могу указать 12 часов в день
Set rs = db.OpenRecordset("Select * from Combined_Prod_PO_2_T ORDER BY SEQ")
'Define Changeover master as RefChangeover recordset
Dim EffStart_DateTime As Date
Dim EffEnd_DateTime As Date
Dim FamFrom As String
Dim FamTo As String
Dim changeover As Double
Dim RefChangeover As Recordset
'rs.OpenRecordset
rs.MoveFirst
Do Until rs.EOF
EffEnd_DateTime = rs.Fields("EFFEND_DATETIME")
FamFrom = rs.Fields("PRODUCT_FAMILY")
Debug.Print FamFrom
rs.MoveNext
If Not rs.EOF Then ' making sure that the "next" line exists i.e. stop at the second last line
FamTo = rs.Fields("PRODUCT_FAMILY")
Debug.Print FamTo
Duration = rs.Fields("DURATION")
Dim sqlcmd As String
sqlcmd = "select sum(hrs) from (SELECT hrs from AP_Changeover_Master where [FROM] = '" & FamFrom & "'" & " and [TO] = '" & FamTo & "'" & " union select distinct 0 from AP_Changeover_Master) "
Debug.Print sqlcmd
Set RefChangeover = db.OpenRecordset(sqlcmd)
changeover = RefChangeover.Fields(0).Value
Debug.Print changeover
'If Not rs.EOF Then
rs.Edit
rs("Effstart_datetime") = EffEnd_DateTime
rs("EffEnd_DateTime") = DateAdd("n", (Duration + changeover) * 60, EffEnd_DateTime)
rs("changeover") = changeover
rs.Update
End If
Loop
rs.Close
Set rs = Nothing