以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 老师自动编号有部分代码,读不懂,请帮忙解释一下 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=160506) |
||||
-- 作者:和谐 -- 发布时间:2021/2/4 17:52:00 -- 老师自动编号有部分代码,读不懂,请帮忙解释一下 此主题相关图片如下:自动编号1.png 老师编号列是字符型,怎么可以转换成整数型呢?还有这部分代码不是很懂请老师帮我解答一下 |
||||
-- 作者:有点蓝 -- 发布时间: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 = "Select 类别, 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 |
||||
-- 作者:和谐 -- 发布时间:2021/2/5 9:27:00 -- If bh.Length = 5 Then 如果编号长度为5 bh = bh.SubString(2) 截取编号从第三位开始的数据,比如编号是HA001,SubString(2)后的值为001 老师就这2行代码我的编号长度超过了5,例如我的编号是:kkibcd001,也可以自动编号正常?就是不明白,要是截取第三位开始的数据那就是:ibcd001,也就不能转换位整数型了?但是他依然可以正常编号? [此贴子已经被作者于2021/2/5 9:28:12编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间: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
|
||||
-- 作者:和谐 -- 发布时间:2021/2/5 11:18:00 --
但是确实可以自动编出字符长度不同又超过长度为2的编号,就是搞不明白
[此贴子已经被作者于2021/2/5 11:19:29编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2021/2/5 11:47:00 -- 可以是可以,重启服务器项目后,每次都会从1开始的吧,而不是从上次最大值开始 |
||||
-- 作者:和谐 -- 发布时间:2021/2/5 12:03:00 -- 老师,保存后正常退出,再打开服务端,启动,再打开客户端连上,再输入可以正常编号,不会从1开始,也就是说这个自动编号是正常的,就是代码这样写,也能任意编制,还可以正常?我就搞不懂了,请老师明示 |
||||
-- 作者:有点蓝 -- 发布时间:2021/2/5 13:32:00 -- 请做个例子发过来测试一下 |
||||
-- 作者:和谐 -- 发布时间:2021/2/5 14:08:00 --
|
||||
-- 作者:有点蓝 -- 发布时间:2021/2/5 14:51:00 -- 我测试重启服务端后,每次客户端第一个类别的编码都是从001开始的。 您怎么测试的?按什么步骤测试?
|