以文本方式查看主题

-  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=152769)

--  作者:朱女士
--  发布时间:2020/7/21 16:45:00
--  自动生成编号列

老师您好!

    我要自动生成表的编号列:规则是“wd-客户-20200721-编号2”,日期是今天日期。取编号2列的最大值加1。我的代码如下但出错。请指教!

\'编号的自动生成

If e.DataCol.Name = "客户" Then
    If e.DataRow.IsNull("客户") Then
        e.DataRow("编号") = Nothing
    Else
        Dim bh As String = Format(Date.today(),"yyyyMMdd")   
        Dim max As String
        Dim idx As Integer
       
        max = e.DataTable.Compute("max(编号2)","[_Identify] <> "& e.DataRow("_Identify"))
messagebox.show(max)
        If max > "" Then \'如果存在最大编号
            idx = CInt(max) + 1 \'获得最大编号加1
        Else
            idx = 1 
        End If
        e.DataRow("编号") = "wd-" & e.DataRow("客户") & "-" & bh & "-" & Format(idx,"000")
    End If
End If


--  作者:有点蓝
--  发布时间:2020/7/21 16:55:00
--  
编号2是字符列?存储的是什么内容?编号2的数据什么时候会变?如果不变,生成的编号不都是同一个?
--  作者:朱女士
--  发布时间:2020/7/21 17:13:00
--  

字符型

编号列:wd-ABB-20191228-0978

编号2是上述截取后四位形成的。在增加行时自动在最大号上加1

 


--  作者:有点蓝
--  发布时间:2020/7/21 17:29:00
--  
既然编号2在增加行时自动在最大号上加1,就是说这一行编号2值已经是确定的了,还有必要再计算一次吗,直接合并不就行了