0

我有一个访问前端,后端是 sql server 2008

其中一个字段是帐号,这是规则

它是一个邮政编码,如 92111 加上一个破折号加一个数字。

所以第一个是 92111-1,第二个是 92111-2

这与我们在邮政编码中有多少客户有关

我希望自动生成此邮政编码。这是我需要的:

  1. 用户输入邮政编码
  2. 我有一个存储过程来检查这个邮政编码是否已经存在,以增加它:如果 92111-4 已经存在,则将其设为 92111-5。

这样做的正确方法是什么?

4

2 回答 2

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

这种方法可以很好地用于单个用户应用程序。如果您的应用程序是多用户的,那么您需要更精细的东西。但是,无论您将“帐号”存储为单个字段还是将其拆分为两个字段,都存在该要求。

有关多用户方法,请参阅创建和使用灵活的自动编号字段。

于 2010-09-20T18:12:56.433 回答
1

我同意 HansUp 的观点,即您应该将 ZIP 和序列分开。您可以创建一个名为 AccountNumber 的索引计算字段,它将 zip 和序列连接起来。

我知道这样做的唯一方法是锁定表,选择max(sequence) ... where ZIP = 12345,插入新记录,然后解锁表。但是,锁定表意味着其他所有人都必须等待,极大地影响了可伸缩性。我不能推荐这个,但我没有其他解决方案。

于 2010-09-20T20:52:22.567 回答