我是VBA代码的新手,所以在下列情况下我可能没有采用最实用的方法。我Items
是Purchase_Orders
的子表单。 Items
中的一个字段是PO_Line_item
。这必须是数字序列(从1开始),其中PO_ID是相同的。如果有几个项目具有相同的PO_ID,那么我需要这个序列。我不能使用Item_ID,因为它们可能不会总是连续添加。
这里是我使用的代码:
Private Sub Form_BeforeUpdate(Cancel As Integer)
Dim db As Database
Dim rs As DAO.Recordset
Dim currentItem As String
Dim seq As Long
Dim sql As String
sql = "SELECT * " & _
"FROM Items " & _
"WHERE PO_ID = " & Me.Parent.PO_ID
Set db = CurrentDb
Set rs = db.OpenRecordset(sql, dbOpenDynaset)
rs.MoveFirst
currentItem = ""
With rs
Do While Not .EOF
If currentItem = "" Then
seq = 1
currentItem = seq
Else
seq = currentItem + 1
currentItem = seq
End If
Me.PO_Line_Item = seq
.MoveNext
Loop
End With
Set rs = Nothing
Set db = Nothing
End Sub
如果我留在记录中,这会很有效,我得到的是1然后是2然后3.但是如果我返回表单并输入另一个项目记录,那么我会重复上一个PO_Line_Item
。即1,2,3,(返回表格)3,4。
如果有人知道为什么会发生这种情况,或者我可以使用的其他方法也可以使用;然后欢迎提出想法。提前致谢。