以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  分组动态代码  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=70972)

--  作者:HJG_HB950207
--  发布时间:2015/7/2 14:38:00
--  分组动态代码
表A: 姓名,部门,编码 



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(2,3)) + 1 
          Else
           idx = 1 
        End If
       e.DataRow("编码") = lb & Format(idx,"000")
        End If
      End If
End Select

按以上代码,存在如下问题:
   1.删除行后,部门内的其他人员编码还是未随之修改,这样部门内的编码不连续;
      如3个人在办公室,编码为:ZH001,ZH002,ZH003, 删除ZH002后,另2个编码仍为原编码(ZH001,ZH003)。
   2.行的位置调整后,该行在部门内的编码未改。
      如3人编码依次分别为ZH001,ZH002,ZH003,如将ZH003移到ZH002前,编码仍为原编码
请教老师:
     部门内的动态编码如何在上代码基础上修改
 


   
   



--  作者:大红袍
--  发布时间:2015/7/2 14:43:00
--  

1、编码,是唯一的依据,是不应该随意变动的,只要确定了,就不要变;

 

2、如果你需要重新编码,就删除全部,然后重置列。


--  作者:HJG_HB950207
--  发布时间:2015/7/2 14:47:00
--  
好的,谢谢了!