Foxtable(狐表)用户栏目专家坐堂 → 自动编号


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

主题:自动编号

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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
自动编号  发帖心情 Post By:2011/8/9 10:43:00 [只看该作者]

按五笔码自动生成编号,品牌相同编号相同,如果删除附件中的“品牌中继号”列,要实现同样功能,主要问题:
 Dim drs As List(of DataRow) = e.DataTable.Select("品牌中继号 Like '" & s2 & "*' And [_Identify] < " & e.DataRow("_Identify"))
这段代码改为:


Dim drs As List(of DataRow) = e.DataTable.Select("编号 Like '" & s2 & "*' And [_Identify] < " & e.DataRow("_Identify"))

 


要使变量drs得到“编号”列的值不重复的数据行的集合,请问如何设置?

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:五笔码加编号.table

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/9 11:11:00 [只看该作者]

没有看懂你的问题。

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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/8/9 11:39:00 [只看该作者]

品牌       编号

联塑      241401

联塑      241401

Ls        241402

 

希望品牌列输入内容时,得到上面编号列同样的效果。

如果直接设置Dim drs As List(of DataRow) = e.DataTable.Select("编号 Like '" & s2 & "*' And [_Identify] < " & e.DataRow("_Identify"))  这个变量,品牌列输入“LS”时,编号列的值是:241403,因为编号列末2位编号规则是以变量drs行数+1,如果希望drs只提取编号列的值不重复的行来执行,类似GetUniqueValues功能,如上面输入LS,执行代码,drs.count得到的是1,请问如何设置?


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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/8/9 17:40:00 [只看该作者]

Dim Customers As List(Of String)
Customers = DataTables("表A").GetUniqueValues("编号 Like '" & s2 & "*'" , "编号")

改用上面代码可以达到要求,但如果修改或删除已经录入的品牌内容,后面新增的编号会出现错误,因为编号末2位用行数+1递增是有限制的(即不能删除和修改前面的品牌),如果改用符合条件编号列的最大值+1就能解决问题。

 

问题:

 

要找出字符型集合中的最大值,请问如何设置?
Dim Customers As List(Of String)
Customers = DataTables("表A").GetUniqueValues("编号 Like '" & s2 & "*'" , "编号")


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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/9 17:48:00 [只看该作者]

Dim vls As List(Of String)
Dim mx As Integer
vls = DataTables("表A").GetUniqueValues("编号 Like '3122*'" , "编号")
For Each vl As String In vls
   Dim v As Integer =  Cint(vl.SubString(4,2))
    mx = math.max(v,mx)
Next
output.show(mx)


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


加好友 发短信
等级:二尾狐 帖子:558 积分:4352 威望:0 精华:2 注册:2011/4/18 8:27:00
  发帖心情 Post By:2011/8/9 18:44:00 [只看该作者]

谢谢!

另一个问题:如果删除或修改的品牌数量较多会浪费较多编号空间,如果下次新增品牌时,符合条件的编号优先填充到这些位置,如:

品牌      编号       修改后     品牌      编号                    品牌       编号 

联塑1    241401               联塑2    241402               联塑2    241402

 

联塑2    241402                                           新增    联塑6    241401 

 

请问如何设置?

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:五笔码加编号.table

[此贴子已经被作者于2011-8-9 18:49:29编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251060 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/8/9 21:06:00 [只看该作者]

Dim i As Integer = 1
Do
   If  DataTables("表A").Find("编号 = '3122" & Format(i,"00") & "'") Is Nothing Then
        Exit Do
    Else
        i = i+ 1
    End If
Loop
messagebox.show(i)

 回到顶部