Foxtable(狐表)用户栏目专家坐堂 → 筛选、排序后编号


  共有2243人关注过本帖树形打印复制链接

主题:筛选、排序后编号

帅哥哟,离线,有人找我吗?
13796361423
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:179 积分:1932 威望:0 精华:0 注册:2020/2/14 18:49:00
筛选、排序后编号  发帖心情 Post By: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



以上命令是给每个学生编号、 可以当我把筛选后,把姓名按照音序排序后, 再重新编号后,还是排序前的编号, 这个编号不能重新更新吗?   有什么办法可以筛选、排序后重新编号?

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107863 积分:548678 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/24 13:39:00 [只看该作者]

筛选不行的,改为按条件加载:http://www.foxtable.com/webhelp/topics/1928.htm

 回到顶部
帅哥哟,离线,有人找我吗?
13796361423
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:179 积分:1932 威望:0 精华:0 注册:2020/2/14 18:49:00
这样可以吗?  发帖心情 Post By:2020/12/24 14:16:00 [只看该作者]

DataTables("小学学籍库").LoadOrder = "姓名"
DataTables(
"小学学籍库").Load

我这样可以不?  先把姓名排序, 然后再编号?

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107863 积分:548678 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:179 积分:1932 威望:0 精华:0 注册:2020/2/14 18:49:00
加载后  发帖心情 Post By:2020/12/24 15:06:00 [只看该作者]

请问加载完之后如何回到以前的表?

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107863 积分:548678 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/24 15:10:00 [只看该作者]

DataTables("小学学籍库").LoadFilter = ""
DataTables("小学学籍库").Load

 回到顶部
帅哥哟,离线,有人找我吗?
13796361423
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:179 积分:1932 威望:0 精华:0 注册:2020/2/14 18:49:00
请问为什么会有两个一样的号?  发帖心情 Post By: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
End Select
图片点击可在新窗口打开查看此主题相关图片如下:微信截图_20201224155008.jpg
图片点击可在新窗口打开查看

 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107863 积分:548678 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/12/24 16:01:00 [只看该作者]

筛选了一部分数据,重新编号;然后又筛选另一部分数据重新编号,肯定有重复的呀。是不是业务没有理清楚?

 回到顶部