我有一张桌子,我需要这个领域" DirNum"是一个0到9999之间的唯一数字。此外,用户需要能够手动分配"随机"该字段的唯一编号,只要介于0到9999之间(例如编号8000)。
由于不可能期望我的用户每次都能猜出唯一的数字,我希望能够为他们创建这个数字。我对如何做到这一点非常开放。
所以我考虑过:
问题是,我真的不知道如何去做这件事。
我认为最好的方法是查询" DirNum"的所有现有值。并将最低值分配给新记录。但我甚至不知道在编码时从哪里开始。
答案 0 :(得分:0)
您可以在vba中创建一个函数来执行此操作。这将返回下一个可用的id或0(如果没有)。 9999设定了上限。
Public Function getNextAvailableID() As Integer
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("Select ID From TestUniqueNumber order by id", dbOpenSnapshot)
Dim intLastID As Integer
Dim intNextAvailableID As Integer
intLastID = 0
With rst
.MoveFirst
Do Until .EOF Or intLastID = 9999
If rst!ID - intLastID > 1 Then
intNextAvailableID = intLastID + 1
Exit Do
End If
intLastID = rst!ID
.MoveNext
Loop
End With
getNextAvailableID = intNextAvailableID
End Function
如果你的行数多于9999且vba太慢,你可以查看一个SQL语句来处理这个问题。