以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  自动编号  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11716)

--  作者:明丰
--  发布时间: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

--  作者:狐狸爸爸
--  发布时间:2011/8/9 11:11:00
--  
没有看懂你的问题。
--  作者:明丰
--  发布时间: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,请问如何设置?


--  作者:明丰
--  发布时间: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 & "*\'" , "编号")


--  作者:狐狸爸爸
--  发布时间: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)


--  作者:明丰
--  发布时间:2011/8/9 18:44:00
--  

谢谢!

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

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

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

 

联塑2    241402                                           新增    联塑6    241401 

 

请问如何设置?

 

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

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

--  作者:狐狸爸爸
--  发布时间: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)