我的访问前端和后端是sql server 2008
其中一个字段是帐号,这是规则
它是一个像92111这样的邮政编码加一个短划线和一个数字。
所以第一个是92111-1,第二个是92111-2
这与我们在邮政编码中拥有的客户数
有关我希望自动生成此邮政编码。这就是我需要的:
这样做的正确方法是什么?
答案 0 :(得分:2)
如果您将zip和客户序列号都存储在一个帐号字段中,则必须将它们拆开以找出给定邮政编码中的下一个序列号。
将它们存储在2个字段中应该更简单:
zipcode sequence_num
92111 4
92111 5
然后在需要时使用查询派生您的帐号字段。
SELECT zipcode & "-" & sequence_num AS acct_num
FROM YourTable;
然后当你需要确定给定邮政编码中的下一个sequence_num,lngNextSequenceNum时,pZip:
lngNextSequenceNum = DMax("sequence_num", "YourTable", "zipcode = " & pZip) +1
该方法适用于单个用户应用程序。如果您的应用程序是多用户,则需要更精确的内容。但是,无论您将“帐号”存储为单个字段还是将其分成两个字段,都存在这一要求。
有关多用户方法,请参阅Create and Use Flexible AutoNumber Fields。
答案 1 :(得分:1)
我同意HansUp你应该保持ZIP和序列分开。您可以创建一个名为AccountNumber的索引计算字段,该字段连接zip和序列。
我知道这样做的唯一方法是锁定表格,选择max(sequence) ... where ZIP = 12345
,插入新记录,然后解锁表格。但是,锁定表意味着其他所有人都必须等待,这极大地影响了可伸缩性。我不能推荐这个,但我没有其他解决方案。