单据号最大值案例方俊霞案例一问题描述:用户在库存模块保存销售出库单时提示:问题查询:1、查询对应的主子表,发现最大iD已经到了‘9999999’如图:而最大单据号表ua_identity对应的主子表标识ifatherid、ichildid确为1,1问题分析过程:•1、看到问题描述,知道是最大单据号的问题了,按照以往的思维模式,就是直接执行以下语句即可:•updateufsystem..ua_identity•setifatherid=(selectmax(id)fromufdata_012_2006..rdrecord),•ichildid=(selectmax(autoid)fromufdata_012_2006..rdrecords)•wherecacc_id='012'andcvouchtype='RD‘•2、或者可以用最大单据号工具来修复即可新问题出现:用最大单据好检测工具不管怎么修改只要一保存单据rd又会到1,1•当Max(rdrecord.id)为9999999,id数据类型为int,为什么保存单据后ua_identitiy表中对应rd的记录上ifatherid就被复原为1了呢?•在821及之前版本中,没有ua_identity这个表。rdrecord.id可以为10位长,用户实际应用中用远程的较少,既便有远程应用的人员也很少有那么多异地仓库,需要从01开始用到20几甚至之后的。•在821向85x及之后高版本升级时,高版本考虑到int数据值范围的问题,对rdrecord.id的最大许可长度调减到9了,前2位为远程标识号+后7位实际的id值。故id达到9999999时,再加其后7位就是0了,ifatherid不可能为0的,故程序后台进行错误处理,强制复原为1。•早期有过这样的821用户数据,远程标示为10,其id位10+8位数值(通常远程号为0x的,在id值上前面的0就被字符函数格式化掉了),升级85x时就出错了。•建议方案•可查看rdrecord表里是否有连续的空号,修改UA_Identity表为该空号即可!