【发布时间】:2019-05-29 16:27:05
【问题描述】:
我正在尝试创建一个将通过一组订单运行的 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
【问题讨论】: