【发布时间】:2021-08-20 17:44:30
【问题描述】:
我有一个不能自动编号的 ID 字段,用作表的主键。当我们放入一条新记录时,我们需要在两个预先存在且无法更改的序列之一中对下一条记录进行编号。
我试图这样做:
=IIf([lst_DeviceType]="Cell Phone",DMax("DeviceNum","tbl_Cell_Tab","DeviceNum < 70000")+1,DMax("DeviceNum","tbl_Cell_Tab")+1)
在将用于创建设备编号的字段内。
我们拥有的是手机和平板电脑,对于手机,设备从 10000 开始,对于平板电脑,从 70000 开始。我需要从列表框中选择“手机”或“平板电脑”导致生成下一个正确的序列号。 IE。 “手机”为 10125,“平板电脑”为 70725
上面的代码返回了一个#Error
因此,我的问题有两个:第一,我的代码有问题吗?我在想我没有正确引用列表框,但也许不是这样。或者二,我不能在文本框本身做这个吗?
这是文本框中使用的代码,我可以在表单上尝试 OnUpdate, 当我尝试使用此代码时,它被放置在列表框的 OnUpdate 中,因为这是主选择器:
If Me.lst_DeviceType = "Cell Phone" Then
Me.txt_DN.Value = DoCmd.RunSQL("SELECT MAX(DeviceNum)+1 FROM tbl_Cell_Tab
WHERE DeviceNum < 70000")
Else
Me.txt_DN.Value = DoCmd.RunSQL("SELECT MAX(DeviceNum)+1 FROM
tbl_Cell_Tab")
End If
Me.txt_DN.Locked = True
但我想知道这是否是最好和最简单的方法?
【问题讨论】: