以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  请教一个编码大小问题?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=142487)

--  作者:jswjyjf
--  发布时间:2019/10/28 19:56:00
--  请教一个编码大小问题?
请教一个编码大小问题?  产品目录库有一个产品编码的字段 ,为字符型,其中有值为10000,9999,9998,我取最大值,应该是多少?我的代码是Dim khbh As String
Dim max As String
Dim idx As Integer
max = DataTables("产品目录表").sqlCompute("Max(产品编码)")
If max > "" Then \'如果存在最大客户编码
    idx = CInt(max) + 1 \'获得最大客户编码的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
khbh=Format(idx,"00000") 
这样计算出来最大值是9999+1 ,而不是10000+1
 我要的是10000+1 ,不知道错在哪里?求答 谢谢

--  作者:有点蓝
--  发布时间:2019/10/28 20:30:00
--  
改为整数型列。

字符串是从左到右按位比较的,“9999”比“10000”大,因为“9999”左边第一位是9,“10000”左边第一位是1

--  作者:有点蓝
--  发布时间:2019/10/28 20:30:00
--  
或者把数据改为:10000,09999,09998这种
--  作者:jswjyjf
--  发布时间:2019/10/28 20:48:00
--  
明白 谢谢
--  作者:jswjyjf
--  发布时间:2019/11/1 15:33:00
--  
现在产品目录表中已有产品编码 ,很乱,有的是00001,00002,00012,99999,12000,我想把0开头的编码取最大值加1,作为新的编码 ,如何写代码? 
--  作者:有点蓝
--  发布时间:2019/11/1 15:45:00
--  
max = DataTables("产品目录表").sqlCompute("Max(产品编码)","产品编码 like \'0%\'")
--  作者:jswjyjf
--  发布时间:2019/11/1 15:54:00
--  
问题来了,加到最后编码是9999,就不能加了,加不上了,出现重复了 ,如何解决 谢谢
--  作者:有点蓝
--  发布时间:2019/11/1 15:59:00
--  
加长,如00001,00002改为000000001,000000002

最好还是改为整数,搞那么麻烦干啥?在需要显示字符的时候再格式化不就行了:format(1,"000000")

--  作者:jswjyjf
--  发布时间:2019/11/1 16:02:00
--  
主要问题是应该存在乱七八糟的编码 ,但是已经有数据了,不能改编码了,以后加就出现重复编码的问题,代码如下
Dim khbh As String
Dim max As String
Dim idx As Integer
\'max = DataTables("产品目录表").sqlCompute("Max(产品编码)")
max = DataTables("产品目录表").sqlCompute("Max(产品编码)","产品编码 like \'0%\'")
If max > "" Then \'如果存在最大客户编码
    idx = CInt(max) + 1 \'获得最大客户编码的后三位顺序号,并加1
Else
    idx = 1 \'否则顺序号等于1
End If
khbh=Format(idx,"000000")
e.Form.Controls("TextBox1").value=khbh
e.Form.Controls("dropBox1").value=Tables("产品类别").current("分类名称")
e.Form.Controls("textbox6").value=Tables("产品类别").current("分类编码")
e.Form.Controls("textbox2").Select

--  作者:有点蓝
--  发布时间:2019/11/1 16:07:00
--  
这种没有办法。建议新的数据全部使用新的编码规则,比如加一个前缀:BH00000001