序列编号

时间:2018-07-13 10:48:42

标签: vba

我有一个Access表,其值类似XX-033inRF6005
此唯一字符串将需要一个与其相连的序列号,例如XX-033inRF6005001

序列号应为:

  • 使用XX-033inRF6005001命名前两个记录。
  • 第三条记录为XX-033inRF6005002
  • 第四名XX-033inRF6005002
  • 第五为XX-033inRF6005003
  • 第六个XX-033inRF6005003

    等。

如何在VBA中实现这一目标。有任何线索吗?

2 个答案:

答案 0 :(得分:0)

对访问不了解很多,但是基本知识应该是

for i = 2 to 2 * LastSequencenumber
    x(i) = "XX-033inRF6005" & format(int(i/2),"000")
next i

当然,您可以通过某种方式读取表中的值,但是我不知道如何在访问中做到这一点

答案 1 :(得分:0)

我不知道它是什么序列并为我的编程识别的含义,因此这是一种将数字序列添加到表中记录的快速而肮脏的方法。
符合条件的每两个记录将当前的cntr值添加为三位数字。

这只会处理XX-033inRF6005,因为您还没有说过要对其他数字进行的操作-重新启动该数字,忽略它们,就好像它们是同一数字一样继续。

您的表和字段的名称需要在下面的代码中更新。

Public Sub AddNumbering()

    Dim qdf As DAO.QueryDef
    Dim rst As DAO.Recordset
    Dim cntr As Long

    Set qdf = CurrentDb.CreateQueryDef("", _
        "SELECT Field_1 FROM Table1 WHERE Field_1 = 'XX-033inRF6005'")

    Set rst = qdf.OpenRecordset

    cntr = 1

    With rst
        If Not (.BOF And .EOF) Then
            .MoveFirst
            Do While Not .EOF
                .Edit
                'Format(cntr,"000") ensures the number is 3 digits long - 001, 002, etc.
                !Field_1 = !Field_1 & Format(cntr, "000")
                .Update
                .MoveNext

                If Not .EOF Then
                    .Edit
                    !Field_1 = !Field_1 & Format(cntr, "000")
                    .Update
                    .MoveNext
                End If

                cntr = cntr + 1
            Loop
        End If

        .Close
        qdf.Close
    End With

    Set rst = Nothing
    Set qdf = Nothing

End Sub