以文本方式查看主题 - 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 -- 好的,谢谢了! |