以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  根据新行号重新重置自动编号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114476)

--  作者:sxjwj
--  发布时间:2018/2/7 9:11:00
--  根据新行号重新重置自动编号
在门店店长调整中,自动编号不能按新的行号排序来自动编号,如何解决?
图片点击可在新窗口打开查看此主题相关图片如下:修改前数据.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:修改数据后.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/2/7 9:12:33编辑过]

--  作者:sxjwj
--  发布时间:2018/2/7 9:21:00
--  
最终效果是要弄成这样,就是不论我怎么调整人员,都根据行号排序来自动编号
图片点击可在新窗口打开查看此主题相关图片如下:最终效果.png
图片点击可在新窗口打开查看

--  作者:sxjwj
--  发布时间:2018/2/7 9:27:00
--  
或者根据岗位先排序,比如店长优先,然后营业员,这样自动编号可行吗?
--  作者:有点甜
--  发布时间:2018/2/7 9:45:00
--  

1、你代码怎么写的?贴出你写的代码

 

2、你根据门店和岗位排序,然后编号即可

 

3、不会做上传实例。


--  作者:sxjwj
--  发布时间:2018/2/7 9:46:00
--  
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 & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(4,3)) + 1 \'获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("员工编号") = lb & Format(idx,"-000")
            End If
        End If
End Select

--  作者:sxjwj
--  发布时间:2018/2/7 9:48:00
--  
我是根据帮助文件里的代码做的,但一旦有变动了,自动编号就无法按我的要求自动编号了
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.table


--  作者:有点甜
--  发布时间:2018/2/7 10:02:00
--  
Select e.DataCol.Name
    Case "门店编号", "岗位"
        If e.DataRow.IsNull("门店编号") Then
            e.DataRow("员工编号") = Nothing
        Else
            Dim lb As String = e.DataRow("门店编号")
            If e.DataRow("岗位") = "店长" Then
                Dim i As Integer = 1
                For Each dr As DataRow In e.DataTable.Select("门店编号 = \'" & e.DataRow("门店编号") & "\'", "岗位")
                    dr("员工编号") = lb & Format(i,"-000")
                    i += 1
                Next
            Else
                If e.DataRow("员工编号").StartsWith(lb) = False Then
                    Dim max As String
                    Dim idx As Integer
                    max = e.DataTable.Compute("Max(员工编号)","门店编号= \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                    If max > "" Then \'如果存在最大编号
                        idx = CInt(max.Substring(lb.length+1,3)) + 1 \'获得最大编号的后三位顺序号,并加1
                    Else
                        idx = 1 \'否则顺序号等于1
                    End If
                    e.DataRow("员工编号") = lb & Format(idx,"-000")
                End If
            End If
        End If
End Select

--  作者:sxjwj
--  发布时间:2018/2/7 10:06:00
--  
调试了,成功了,非常感谢大神
--  作者:sxjwj
--  发布时间:2018/2/7 12:22:00
--  
我又碰到一个问题,比如按岗位条件排序自动编号,第1条件是“店长”,就像上文那样编,如追加第二条件是“副店长”来排序自动编号的话,如何编?
--  作者:sxjwj
--  发布时间:2018/2/7 12:39:00
--  
我又碰到一个问题,比如按岗位条件排序自动编号,第1条件是“店长”,就像上文那样编,如追加第二条件是“副店长”来排序自动编号的话,如何编?