在Access 2010中对子表单项VBA代码列表进行排序时重复的数字

时间:2015-08-14 08:51:09

标签: vba ms-access ms-access-2010

我是VBA代码的新手,所以在下列情况下我可能没有采用最实用的方法。我ItemsPurchase_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。

如果有人知道为什么会发生这种情况,或者我可以使用的其他方法也可以使用;然后欢迎提出想法。提前致谢。

0 个答案:

没有答案