以文本方式查看主题 - 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 |