我有一个Access表,其值类似XX-033inRF6005
。
此唯一字符串将需要一个与其相连的序列号,例如XX-033inRF6005001
。
序列号应为:
XX-033inRF6005001
命名前两个记录。 XX-033inRF6005002
XX-033inRF6005002
XX-033inRF6005003
第六个XX-033inRF6005003
等。
如何在VBA中实现这一目标。有任何线索吗?
答案 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