Foxtable(狐表)用户栏目专家坐堂 → 请教一个编码大小问题?


  共有2440人关注过本帖树形打印复制链接

主题:请教一个编码大小问题?

帅哥哟,离线,有人找我吗?
jswjyjf
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
请教一个编码大小问题?  发帖心情 Post By: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 ,不知道错在哪里?求答 谢谢

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107024 积分:544351 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/28 20:30:00 [只看该作者]

改为整数型列。

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

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107024 积分:544351 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/28 20:30:00 [只看该作者]

或者把数据改为:10000,09999,09998这种

 回到顶部
帅哥哟,离线,有人找我吗?
jswjyjf
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2019/10/28 20:48:00 [只看该作者]

明白 谢谢

 回到顶部
帅哥哟,离线,有人找我吗?
jswjyjf
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2019/11/1 15:33:00 [只看该作者]

现在产品目录表中已有产品编码 ,很乱,有的是00001,00002,00012,99999,12000,我想把0开头的编码取最大值加1,作为新的编码 ,如何写代码? 

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107024 积分:544351 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/1 15:45:00 [只看该作者]

max = DataTables("产品目录表").sqlCompute("Max(产品编码)","产品编码 like '0%'")

 回到顶部
帅哥哟,离线,有人找我吗?
jswjyjf
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By:2019/11/1 15:54:00 [只看该作者]

问题来了,加到最后编码是9999,就不能加了,加不上了,出现重复了 ,如何解决 谢谢

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107024 积分:544351 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/1 15:59:00 [只看该作者]

加长,如00001,00002改为000000001,000000002

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

 回到顶部
帅哥哟,离线,有人找我吗?
jswjyjf
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2552 积分:20045 威望:0 精华:0 注册:2012/5/19 11:57:00
  发帖心情 Post By: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

 回到顶部
帅哥,在线噢!
有点蓝
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107024 积分:544351 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/11/1 16:07:00 [只看该作者]

这种没有办法。建议新的数据全部使用新的编码规则,比如加一个前缀:BH00000001

 回到顶部
总数 13 1 2 下一页