Foxtable(狐表)用户栏目专家坐堂 → 超过10组的分组分道问题


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

主题:超过10组的分组分道问题

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/2/18 20:17:00 [显示全部帖子]

 呃,表A在哪里?附上数据源

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/2/19 22:27:00 [显示全部帖子]

 代码改成这样

Dim ss As List(of String) = DataTables("表A").GetValues("项目", Tables("表A").Filter)
For Each s As String In ss
    Dim drs As List(of DataRow) = DataTables("表A").Select("项目='" & s & "' and " & Tables("表A").Filter, "单位")
    drs(0)("预赛组别") = 1
    For i As Integer = 1 To drs.Count - 1
        Dim i1 As Integer = drs(i-1)("预赛组别")
        If i1 >= Math.Ceiling(drs.Count/8)
            For i2 As Integer = 1 To 8
                Dim i3 As Integer = DataTables("表A").Compute("Count(项目)","项目='" & s & "' and 预赛组别='" & i2 & "' and " & Tables("表A").Filter)
                If i3 < Math.Ceiling(drs.Count/8)
                    drs(i)("预赛组别") = 1
                Else
                    drs(i)("预赛组别") = i3
                End If
            Next
        Else
            drs(i)("预赛组别") = i1 + 1
        End If
    Next
Next

For Each s As String In ss
    Dim ss1 As List(of String) = DataTables("表A").GetValues("预赛组别","项目='" & s & "' and " & Tables("表A").Filter)
    For Each s1 As Integer In ss1
        ' Dim drs As List(of DataRow) = DataTables("表A").Select("项目='" & s & "'and 预赛组别=" & s1,"单位")
        Dim drs As List(of DataRow) = DataTables("表A").Select("项目='" & s & "'and 预赛组别='" & s1 & "' and " & Tables("表A").Filter,"单位")
        drs(0)("预赛道次") = 1
        For i As Integer = 1 To drs.Count - 1
            drs(i)("预赛道次") = drs(i-1)("预赛道次") + 1
        Next
        For i As Integer = 1 To drs.Count - 1
            If drs(i)("单位") = drs(i-1)("单位")
                If (i-4)>=0
                    drs(i)("预赛道次") =  i-4+1
                    drs(i-4)("预赛道次") = i+1
                ElseIf (i+4)<=drs.Count
                    drs(i)("预赛道次") =  i+4+1
                    drs(i+4)("预赛道次") = i+1
                End If
            End If
        Next
    Next
Next
Tables("表A").Sort = "项目,预赛组别,预赛道次"

清除跑道的代码

DataTables("表A").ReplaceFor("预赛组别",Nothing,Tables("表A").Filter)
DataTables("表A").ReplaceFor("预赛道次",Nothing,Tables("表A").Filter)

 回到顶部