以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 自动编号的问题!  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=28679)

--  作者:pfj511
--  发布时间:2013/2/10 16:13:00
--  [求助] 自动编号的问题!

Select Case e.DataCol.Name
    Case "委托日期", "样品编号"
        If e.DataRow.IsNull("委托日期") OrElse e.DataRow.IsNull("样品编号") Then
            e.DataRow("自动编号") = Nothing
        Else
            Dim y As String = Format(e.DataRow("委托日期"),"yyyy") \'取得编号的年号
            Dim bh As String = e.DataRow("样品编号") & y.SubString(2,2)\'取得编号的前缀
            Dim max As String=e.DataTable.Compute("Max(自动编号)","自动编号 like \'" & bh & "*\'") \'取得该年的最大自动编号
            Dim idx As Long
           
            If max = "" Then          
                e.DataRow("自动编号") = bh & "-1"
            Else              
                Dim va As String() = CStr(max).Split("-")
                idx = CLng(va(1)) + 1 \'获得最大编号的顺序号,并加1
                e.DataRow("自动编号") = bh & "-" & idx
            End If
           
        End If
End Select

 

 

我想实现

HH13-1

HH13-2

.

.

HH13-9

HH13-10

HH13-11

...

 

但是

HH13-10 以后一直是 HH13-10

 

请教高手 帮忙分析下哪里出错了?感谢!

 

 

 

 

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

[此贴子已经被作者于2013-2-10 16:13:02编辑过]

--  作者:Liuxinyu
--  发布时间:2013/2/10 18:48:00
--  

由于自动编号的数据格式是文本,FT比较文本大小时,是从左到右逐个比较大小,当比较到第6位时,9最大,所以加1后,总是10。

 

楼主自行想法解决吧。

 

[此贴子已经被作者于2013-2-10 18:48:17编辑过]

--  作者:程兴刚
--  发布时间:2013/2/10 22:21:00
--  

这不是狐表本身的问题,VB.net比较文本都是这个规则,也许这个对楼主有用:

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=26913&replyID=&skin=1


--  作者:pfj511
--  发布时间:2013/2/11 16:04:00
--  
晓得了 ,如果我将格式修改为0001....0009 0010  就可以避免这个问题了!非常感谢!