Foxtable(狐表)用户栏目专家坐堂 → 老师自动编号有部分代码,读不懂,请帮忙解释一下


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

主题:老师自动编号有部分代码,读不懂,请帮忙解释一下

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/4 20:24:00 [显示全部帖子]

转换参考:http://www.foxtable.com/webhelp/topics/0324.htm

什么地方不懂请具体指出来

Dim dt As DataTable
Dim
 cmd As New SQLCommand
cmd
.ConnectionName = "数据源名称"
cmd
.CommandText = "Selec类别, Max(编号) As 编号 From {产品} Group By 类别" 使用sql分组获取每个类别的最大编号
dt
 = cmd.ExecuteReader 
flbhs.Clear()‘清空编号集合
For
 Each dr As DataRow In dt.DataRows 
    Dim qz As String = dr("
类别"'编号前缀
    Dim bh As String =  dr("
编号")
    Dim id As Integer
    If bh.Length = 5 Then 如果编号长度为5
        bh = bh.SubString(2) 截取编号从第三位开始的数据,比如编号是HA001,SubString(2)后的值为001
        If Integer.TryParse(bh,id) Then 转换为整数
            
flbhs.Add(qz, id) 添加到集合中
        End If
    
End If
Next

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 9:56:00 [显示全部帖子]

不可能的,调试一下

For Each dr As DataRow In dt.DataRows 
    Dim qz As String = dr("
类别"'编号前缀
    Dim bh As String =  dr("
编号")
    Dim id As Integer
msgbox("bh=" & bh & ",length=" & bh.Length)
    If bh.Length = 5 Then 如果编号长度为5

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 11:47:00 [显示全部帖子]

可以是可以,重启服务器项目后,每次都会从1开始的吧,而不是从上次最大值开始

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 13:32:00 [显示全部帖子]

请做个例子发过来测试一下

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 14:51:00 [显示全部帖子]

我测试重启服务端后,每次客户端第一个类别的编码都是从001开始的。

您怎么测试的?按什么步骤测试?

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 15:58:00 [显示全部帖子]

编号长度是5位的肯定正常啊!代码本来就是判断5位的。不是5位的肯定不正常

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 16:11:00 [显示全部帖子]

在增加多几行,编号增加到JKOUIO002、JKOUIO003、...保存客户端项目。重启服务端,然后重新测试客户端,新增行,是不是又从JKOUIO001开始了?

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 16:23:00 [显示全部帖子]

代码判断的是5位长度,如果位数不定,就把判断去掉

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/5 16:50:00 [显示全部帖子]

自己灵活处理一下,代码都是死的,比如:

Dim qz As String = "abcdefg" '编号前缀
Dim bh As String = "
abcdefg001"

bh = bh.SubString(qz.length)
msgbox(bh)

qz = "abc" '编号前缀
bh = "
abc001"
bh = bh.SubString(qz.length)
msgbox(bh)

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


加好友 发短信
等级:超级版主 帖子:111411 积分:567125 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/2/7 9:18:00 [显示全部帖子]

都一样的用法呀,把这个前缀当作是一种固定的类别不就行了

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