以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  特殊编号--已解决  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=58866)

--  作者:qhczy
--  发布时间:2014/10/25 11:53:00
--  特殊编号--已解决

[此贴子已经被作者于2014-10-25 13:05:14编辑过]

--  作者:qhczy
--  发布时间:2014/10/25 12:18:00
--  
问题已解决.
Select e.DataCol.Name
    Case "第二列","第三列","第四列"
        If e.DataRow.IsNull("第二列") OrElse e.DataRow.IsNull("第三列") OrElse e.DataRow.IsNull("第四列")  Then           
            e.DataRow("第五列") =Nothing
        Else
            Dim lb As String = e.DataRow("第二列") & "-" & e.DataRow("第三列") & "-" & e.DataRow("第四列")  \'生成编号的前缀
            Dim max As String
            Dim idx As Integer
            Dim d As String =e.DataRow("第二列")
            Dim t As String =e.DataRow("第三列")
            Dim s As String =e.DataRow("第四列")
\'
            max = e.DataTable.Compute("Max(第五列)","第二列 = \'" & d &"\' And 第三列 =\'" & t &"\'  And 第四列 =\'" & s &"\'   And [_Identify] <> " & e.DataRow("_Identify")) \' [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
            If max > "" Then \'如果存在最大编号
                \'idx = CInt(max) + 1
                idx = CInt(max.Substring(lb.Length+1,3)) + 1 \'获得最大编号的后三位顺序号,并加1
            Else
                idx = 1 \'否则顺序号等于1
            End If
            e.DataRow("第五列") = lb & "-" & Format(idx,"000")
            e.DataRow("第六列") = idx
        End If
End Select