以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 筛选、排序后编号 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=159383) |
-- 作者:13796361423 -- 发布时间:2020/12/24 13:32: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(2,4)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("序号学校") = lb & Format(idx,"0000") End If End If End Select 以上命令是给每个学生编号、 可以当我把筛选后,把姓名按照音序排序后, 再重新编号后,还是排序前的编号, 这个编号不能重新更新吗? 有什么办法可以筛选、排序后重新编号?
|
-- 作者:有点蓝 -- 发布时间:2020/12/24 13:39:00 -- 筛选不行的,改为按条件加载:http://www.foxtable.com/webhelp/topics/1928.htm |
-- 作者:13796361423 -- 发布时间:2020/12/24 14:16:00 -- 这样可以吗? DataTables("小学学籍库").LoadOrder = "姓名" DataTables("小学学籍库").Load 我这样可以不? 先把姓名排序, 然后再编号?
|
-- 作者:有点蓝 -- 发布时间:2020/12/24 14:26:00 -- DataTables("小学学籍库").LoadFilter = "某实筛选条件" DataTables("小学学籍库").Load 排序要使用sort,这里也不需要排序,改改代码即可 max = e.DataTable.Compute("Max(序号学校)","编号 = \'" & lb & "\' and 姓名 <= \'" & e.DataRow("姓名") & "\' And [_Identify] <> " & e.DataRow("_Identify"))
|
-- 作者:13796361423 -- 发布时间:2020/12/24 15:06:00 -- 加载后 请问加载完之后如何回到以前的表? |
-- 作者:有点蓝 -- 发布时间:2020/12/24 15:10:00 -- DataTables("小学学籍库").LoadFilter = "" DataTables("小学学籍库").Load
|
-- 作者:13796361423 -- 发布时间:2020/12/24 15:52: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 学生姓名 <= \'" & e.DataRow("学生姓名") & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号 If max > "" Then \'如果存在最大编号 idx = CInt(max.Substring(2,4)) + 1 \'获得最大编号的后三位顺序号,并加1 Else idx = 1 \'否则顺序号等于1 End If e.DataRow("序号学校") = lb & Format(idx,"0000") End If End If
|
-- 作者:有点蓝 -- 发布时间:2020/12/24 16:01:00 -- 筛选了一部分数据,重新编号;然后又筛选另一部分数据重新编号,肯定有重复的呀。是不是业务没有理清楚? |