我有2张桌子。一个是我们需要发货的订单。有一个发货日期,零件号和所需数量,以及订单#(以及其他字段)。第二个表包含供应商订购的零件。它有采购订单#,数量和零件号。
我需要做的是按特定顺序处理VBA中的订单表。它需要"排序"按日期发货(最早的日期),然后按订单号。我有代码(下面)将PO#添加到订单表中,这样我就可以看到我需要的商品是什么PO。问题是代码没有考虑我希望它处理的顺序。我已经明白表格不是电子表格,而且订单不是我保证的。
如果能够按指定的顺序处理此操作,我需要做什么。我已经在下面包含了我的代码,该代码可以正常工作,而不是按照请求的顺序处理。
Public Sub Magic()
Dim SOQi As Integer
Dim POQi As Integer
Dim PONi As Long
Dim db As Database
Dim SOrs As Recordset
Dim POrs As Recordset2
Set db = CurrentDb
Set SOrs = db.OpenRecordset("T_openorders")
Set POrs = db.OpenRecordset("T_InboundPO")
SOrs.MoveFirst
Do Until SOrs.EOF
If SOrs.Fields("missing") < 0 Then
POrs.MoveFirst
Do Until POrs.EOF
SOQi = SOrs.Fields("missing")
If POrs.Fields("OrderQty") > 0 Then
POQi = POrs.Fields("OrderQty")
If POrs.Fields("PartNum") = SOrs.Fields("PartNum") Then
If Abs(POQi) > Abs(SOQi) Then
POQi = POQi + SOQi
PONi = POrs.Fields("PONUM")
POrs.Edit
POrs("OrderQty") = POQi
POrs.Update
SOrs.Edit
SOrs("PONum") = PONi
SOrs("missing") = 0
SOrs.Update
Else
SOQi = POQi + SOQi
PONi = POrs.Fields("PONUM")
POrs.Edit
POrs("OrderQty") = 0
POrs.Update
SOrs.Edit
SOrs("PONum") = PONi
SOrs("missing") = SOQi
SOrs.Update
End If
End If
End If
POrs.MoveNext
Loop
End If
SOrs.MoveNext
Loop
SOrs.Close
Set SOrs = Nothing
Set POrs = Nothing
db.Close
End Sub
答案 0 :(得分:0)
使用SELECT
查询作为记录集的数据源。在查询中,您可以包含ORDER BY
子句,并且记录将按顺序加载到记录集中。
我忘记了你的桌子和田野名称,所以我自己做了。
Dim db As Database
Dim rs As DAO.Recordset
Dim strSelect As String
strSelect = "SELECT y.* FROM YourTable AS y" & vbCrLf & _
"ORDER BY y.[ship by date], y.[order number];"
Debug.Print strSelect
Set db = CurrentDb
Set rs = db.OpenRecordset(strSelect)
' loop through the recordset row to confirm
' data is present in correct order ...
Do While Not rs.EOF
Debug.Print rs![ship by date], rs![order number]
rs.MoveNext
Loop