以文本方式查看主题

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

--  作者:hrw68529
--  发布时间:2013/3/7 11:45:00
--  [求助]自动编号问题
按面试室编号

假定有下图所示的一个表,编号根据面试室生成,前两位为面试室,抽签序号不按面试室*01,而是按面试室1为a,面试室2为b,面试室3为c面试室4为d面试室5为e,....,后2位为顺序号,最后在抽签序号里自动生成如面试室1为a01,...,面试室2为:b01,....

图片点击可在新窗口打开查看此主题相关图片如下:面试室.png
图片点击可在新窗口打开查看


代码为:请修改一下

Select e.DataCol.Name
    Case "面试室"
        If e.DataRow.IsNull("面试室") Then
            e.DataRow("抽签序号") = Nothing
        Else
            Dim lb As String = e.DataRow("面试室")
            If e.DataRow("抽签序号").StartsWith(lb) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(抽签序号)","面试室 = \'" & lb & "\'") \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(2,2)) + 1 \'获得最大编号的后2位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("抽签序号") = lb & Format(idx,"00")
            End If
        End If
End Select


--  作者:jijianjsj
--  发布时间:2013/3/7 12:45:00
--  
我觉得你应该参照帮助里面的SQL应用实列,有个网络自动编号的例子,你应该在增加一张编号表就可以了。
--  作者:狐狸爸爸
--  发布时间:2013/3/7 14:13:00
--  

Select e.DataCol.Name
    Case "面试室"
        If e.DataRow.IsNull("面试室") Then
            e.DataRow("抽签序号") = Nothing
        Else
            Dim mss() As String = {"面试室1","面试室2","面试室3"}
            Dim dms() As String = {"a","b","c"}
            Dim lb As String
            For i As Integer = 0  To mss.Length - 1
                If mss(i) = e.NewValue Then
                    lb = dms(i)
                    Exit For
                End If
            Next
            If lb > "" AndAlso e.DataRow("抽签序号").StartsWith(lb) = False \'如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(抽签序号)","面试室 = \'" & e.NewValue & "\'") \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(1,2)) + 1 \'获得最大编号的后2位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("抽签序号") = lb & Format(idx,"00")
            End If
        End If
End Select


--  作者:hrw68529
--  发布时间:2013/3/8 9:30:00
--  
谢谢狐爸,成功了
--  作者:ZHX241806
--  发布时间:2013/6/24 6:15:00
--  

很想学习,能否上传该成功项目?谢谢!