VD30论坛(五) VD30自动编号
VD30论坛(五) VD30自动编号
============================================================================
在Ineternet使用系统, 除了让系统有实时的便利性之外, 就是可以让系统能集中管理,
因此, 在系统分散的情况下, 必须顾及编号的一致性与原则性, 因此, 这种系统必须
要能支持弹性的自动编号功能, 来满足系统上的要求.
VD30中, 我们提供了两个自动编号的组件, 一个是A/P Server端的AUTONUM组件, 另一
个则是用来编明细档(第二三阶)序号的AUTOSEQ组件, 分述如下:
AUTONUM组件规格
------------------------------------
用途: 使用于A/P Server端, 用在UpdateComp新增数据前来自动编出单据号码号时使用.
组件属性:
AutoNoID(识别代号): 自动编号的识别码, 每个自动编号的原则都须给一个唯一的编号,
如果没有特殊的情况, 可以用所要写入的Table Name作为本识别码.
UpdateComp(更新组件): 所要编号的 UpdateComp组件.
TargetColumn(编号字段): 所要编号之UpdateComp的字段名称, 完成编号后将存回本指定
字段上. 本字段仅支持字符串型态.
FixedExp(前置码): 为自动编号之前置码, 本前引码一般用来编出有规则性的前置码, 如
以年月或日期做为前置码, 或以某字段如客户厂商产品类别等做为分类的序号等, 没有
前置码则代表纯粹只编出连续序号的号码.
NumDig(编号位数): 指要编出号码的位数, 如3代表要编出001至999的号码, 自动编号的
字段总长度为FxiedExp的长度加上本NumDig的位数.
StartValue(起始号码):指每次编出第一号的起始号码, 预设为1.
Step(每次递增): 指每次编号要加上多少号, 预设大都是1, 如为2, 则可编出 1,3,5,7┅
等号码.
OverFlow(溢位处理): True/Fase, True代表允许溢位时将第一码改以'A'~'Z'编号, 再以
'a'~'z'编号之, 如果为Fase则代表不允许溢位, 溢位时将出现error讯息.
本组件会固定使用到一个sysautonum的系统Table, 其结构为:
AutoId(VarChar20)
Fixed(VarChar20)
CurrNum(Num10)
所有的AUTONUM组件都会以这个Table的内容依据来编号. 为了让两个以上的User同时编号
不会重复, 我们使用了最精密的方式控制Sysautonum这个数据表的内容, 也就是每次取出
CurrNum值后去Update新的CurrNum值有加上Where CurrNum=取出三考值, 来证明这段其间
没有人去更新到CurrNum的值, 来保证不会重复使用.