我已经搜索了好几个星期了,我想知道我是不是在叫错树或者我错过了什么。我正在Access中创建一个数据库。
结构如下:
tblOrderDetails
.ORDERID .DEALER .CREATEDATE
4051 Willow 4/17/18
4052 Oak 4/17/18
tblOrderLines
.ROWID .ORDERID .PRODUCTSKU .ORDERLINENUMBER
1 4051服务台1
2 4051主席2
3 4052梳妆台1
4 4052主席2
希望一切都有道理。
ROWID和ORDERID是自动生成的访问号码。我使用它们作为主键,因此tblOrderDetails.ORDERID是1:n tblOrderLines.ORDERID。
我的问题是关于订单行号。目前,我正在使用查询在打印标签和装箱单时生成行号,但似乎这不是最佳做法。
是否有某种方法可以使用SQL或某些访问函数来创建一个为每个新订单重新启动的序列号。
答案 0 :(得分:0)
此代码将为订单ID提供下一个订单行号 我认为您必须将其作为表单控件的默认值,或者可能在 after_update 事件中。 我不确定 - 玩个游戏。
Sub Test()
MsgBox NewOrderLineNumber(4051)
End Sub
Public Function NewOrderLineNumber(OrderID As Long) As Long
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", "PARAMETERS Order_Identifier Long; " & _
"SELECT COUNT(OrderID) AS CurrentCount " & _
"FROM tblOrderLines " & _
"WHERE OrderID = Order_Identifier")
With qdf
.Parameters("Order_Identifier") = OrderID
Set rst = .OpenRecordset
End With
With rst
If Not (.BOF And .EOF) Then
NewOrderLineNumber = .Fields("CurrentCount") + 1
End If
End With
End Function