以文本方式查看主题

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

--  作者:seal51
--  发布时间:2015/5/15 23:45:00
--  自动编号

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150515234303.png
图片点击可在新窗口打开查看

--  作者:Bin
--  发布时间:2015/5/16 8:41:00
--  
http://www.foxtable.com/help/topics/2403.htm

直接锁定这列,任何时候都不可编辑,只能自动生成就好

--  作者:seal51
--  发布时间:2015/5/16 16:31:00
--  

老师, 你们没有回复如何自动生成我需要的编号


--  作者:Bin
--  发布时间:2015/5/16 16:36:00
--  
看2楼帮助


--  作者:seal51
--  发布时间:2015/5/16 16:41:00
--  
2楼没有我想要的编号方法
--  作者:Bin
--  发布时间:2015/5/16 16:42:00
--  
呵呵,说明你没有看
--  作者:seal51
--  发布时间:2015/5/16 16:50:00
--  
Select e.DataCol.Name
     Case  "排产单号"
          If e.DataRow.IsNull("排产单号") Then
             e.DataRow("排产序号") = Nothing
         Else
             Dim pid As  String = e.DataRow("排产单号")
             If e.DataRow("排产序号").StartsWith(pid) = False  \'如果单据排产序号前缀不符
                Dim max  As  String
                 Dim idx  As  Integer
                max = e.DataTable.Compute("Max(排产序号)","排产单号 = \'" & pid  & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该排产单号的最大排产序号
                If max > ""  Then  \'如果存在最大排产序号
                    idx = CInt(max.Substring(3,3)) + 1  \'获得最大排产序号的后三位顺序号,并加1
                 Else
                     idx = 1  \'否则顺序号等于1
                 End  If
                 e.DataRow("排产序号") = pid & Format(idx,"000")
             End If
         End  If
 End  Select

--  作者:seal51
--  发布时间:2015/5/16 16:50:00
--  

上面的代码哪个地方有问题呢


--  作者:Bin
--  发布时间:2015/5/16 16:52:00
--  

 idx = CInt(max.Substring(5,3)) + 1 
e.DataRow("排产序号") = pid & "-" & Format(idx,"000")

--  作者:seal51
--  发布时间:2015/5/16 16:54:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20150516165228.png
图片点击可在新窗口打开查看

 

怎么会成这样呢, 如果把P15-0501001更改为P15-0501-001如何做呢