以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助:编号代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=101168)

--  作者:刘异
--  发布时间:2017/5/26 9:11:00
--  求助:编号代码

老师好:

我想达到的目的是:

后面的流水号不要规定位数,不管多少位数一直延下去

如:

要:2017-51,2017-52,2017-53;

不要:2017-5001,2017-5002,2017-5003;

请老师帮忙,修改一下代码,多谢!

 


Select e.DataCol.Name
    Case "年份", "月份"
        If e.DataRow("辅助列") = Nothing Then
            Dim flag As Boolean = False
            Dim lb As String = e.DataRow("年份") &"-"& e.DataRow("月份")
            Dim bhs As List(of String) = e.DataTable.sqlGetValues("工令单号", "工令单号 Like \'" & lb & "%\' And [_Identify] <> " & e.DataRow("_Identify"))
            For i As Integer = 1 To bhs.count
                If bhs(i-1) <> lb & Format(i, "000") Then
                    lb = lb & Format(i, "000")
                    flag = True
                    Exit For
                End If
            Next
            If bhs.count = 0 Then
                lb = lb & "001"
            ElseIf flag = False Then
                lb = lb & Format(bhs.count+1, "000")
            End If
            e.DataRow("工令单号") = lb
        End If
End Select
e.DataRow.Save


--  作者:有点色
--  发布时间:2017/5/26 9:18:00
--  

 你加一个数值列的流水号吧,根据这个列的数据,取最大的那一个,就行了。

 

 做个具体例子发上来测试。


--  作者:刘异
--  发布时间:2017/5/26 9:34:00
--  

老师好:请查看附件,这需要网络编号不重复的情况下达到上述目的

多谢

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


--  作者:有点蓝
--  发布时间:2017/5/26 11:25:00
--  
增加一整型列作为顺序号。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb



网络编号不重复需要使用OpenQQ处理,参考:http://www.foxtable.com/webhelp/scr/3008.htm

--  作者:刘异
--  发布时间:2017/5/26 11:34:00
--  

老师好:帮助中网络编号会断号,客户要求不能断号,所以很麻烦。

用1楼代码,网络编号不重复不断号。

但客户又要求不要固定流水号位数,呵呵!


--  作者:有点蓝
--  发布时间:2017/5/26 14:04:00
--  
1楼的方式也没有办法保证网络编号不重复不断号。你的并发量应该少,还看不出来。

断号复用需要专门进行处理的,而且一旦断号就很难保证号码的顺序是符合业务时间的顺序的。所以大多数情况下断号复用没有多大的意义,而且处理起来又麻烦。特别是编号如果和其它表有关联,业务逻辑如果处理不好还会因此引发一系列的数据问题,产生不必要的垃圾数据。

--  作者:刘异
--  发布时间:2017/5/26 16:52:00
--  

多谢老师