需要在没有自动编号的情况下在Access中创建递增的客户ID

时间:2017-03-16 09:13:51

标签: mysql ms-access ms-access-2010

我目前正在为公司创建一个数据库,我需要为每条新记录添加一个客户ID。

我设计了一个data entry form并在其上运行了以下模块来创建ID:

选项比较数据库

函数NewCustomerIDCode()As Long

Dim db             As Database
Dim LSQL           As String
Dim LUpdate        As String
Dim Lrs            As DAO.Recordset
Dim LNewCustomerIDCode As Long

On Error GoTo Err_Execute

Set db = CurrentDb()

'Retrieve last number assigned for Customer ID Code
LSQL = "Select Last_Nbr_Assigned from CustomerIDCode"
LSQL = LSQL & " where Code_Desc = 'Customer ID Code'"

Set Lrs = db.OpenRecordset(LSQL)

'If no records were found, return an error
If Lrs.EOF = True Then
    LNewCustomerIDCode = 0
    MsgBox "There was no entry found in the Codes table for Customer ID Code."

Else
    'Determine new Customer ID Code
    LNewCustomerIDCode = Lrs("Last_Nbr_Assigned") + 1

    'Increment Customer ID Code in CustomerIDCode table by 1
    LUpdate = "Update CustomerIDCode"
    LUpdate = LUpdate & " set Last_Nbr_Assigned = " & LNewCustomerIDCode
    LUpdate = LUpdate & " where Code_Desc = 'Customer ID Code'"

    db.Execute LUpdate, dbFailOnError

End If

Lrs.Close
Set Lrs = Nothing
Set db = Nothing

NewCustomerIDCode = LNewCustomerIDCode

Exit Function

Err_Execute:     '发生错误,返回0     NewCustomerIDCode = 0     MsgBox“尝试确定要分配的下一个客户ID代码时发生错误。”

结束功能

问题是,如果有人开始以这种形式输入数据,则分配ID(例如:1023)。如果由于任何原因他们决定不填写条目并删除记录,则下一个条目将获得数字(例如:1024)。但我需要重复使用1023因为它没有链接到记录。出于会计原因,我不能跳过这个号码。

另一方面,如果创建了新记录,并且由于某种原因在一年内被删除,则其号码无法重复使用。例如,我们删除记录1023,但我们最后输入的记录是1145,下一条记录应该是1146而不是删除的10210。

仅仅为了一些背景信息,我有一个单独的Autonumber作为主键。这对用户不可见,对记录没有任何意义,除了Access为每条记录都有唯一的编号。

有人可以帮忙吗?我一直在网上搜索一天,我能找到的唯一的东西是关于自动装置,这里不适用。

0 个答案:

没有答案