我有一个访问前端,后端是 sql server 2008
其中一个字段是帐号,这是规则
它是一个邮政编码,如 92111 加上一个破折号加一个数字。
所以第一个是 92111-1,第二个是 92111-2
这与我们在邮政编码中有多少客户有关
我希望自动生成此邮政编码。这是我需要的:
- 用户输入邮政编码
- 我有一个存储过程来检查这个邮政编码是否已经存在,以增加它:如果 92111-4 已经存在,则将其设为 92111-5。
这样做的正确方法是什么?
我有一个访问前端,后端是 sql server 2008
其中一个字段是帐号,这是规则
它是一个邮政编码,如 92111 加上一个破折号加一个数字。
所以第一个是 92111-1,第二个是 92111-2
这与我们在邮政编码中有多少客户有关
我希望自动生成此邮政编码。这是我需要的:
这样做的正确方法是什么?
如果您将邮政编码和客户序列号都存储在一个帐号字段中,则必须将它们分开以找出给定邮政编码中的下一个序列号。
将它们存储在 2 个字段中应该更简单:
zipcode sequence_num
92111 4
92111 5
然后在需要时使用查询导出您的帐号字段。
SELECT zipcode & "-" & sequence_num AS acct_num
FROM YourTable;
然后,当您需要确定给定邮政编码 pZip 内的下一个序列号 lngNextSequenceNum 时:
lngNextSequenceNum = DMax("sequence_num", "YourTable", "zipcode = " & pZip) +1
这种方法可以很好地用于单个用户应用程序。如果您的应用程序是多用户的,那么您需要更精细的东西。但是,无论您将“帐号”存储为单个字段还是将其拆分为两个字段,都存在该要求。
有关多用户方法,请参阅创建和使用灵活的自动编号字段。
我同意 HansUp 的观点,即您应该将 ZIP 和序列分开。您可以创建一个名为 AccountNumber 的索引计算字段,它将 zip 和序列连接起来。
我知道这样做的唯一方法是锁定表,选择max(sequence) ... where ZIP = 12345
,插入新记录,然后解锁表。但是,锁定表意味着其他所有人都必须等待,极大地影响了可伸缩性。我不能推荐这个,但我没有其他解决方案。