Foxtable(狐表)用户栏目专家坐堂 → 查询按钮生成的数据不完整


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

主题:查询按钮生成的数据不完整

美女呀,离线,留言给我吧!
采菊东篱下
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 11:00:00 [显示全部帖子]

1、把比赛积分表指定棋赛名称、轮次、桌号大于0的行安桌号排序
2、把比赛积分表指定棋赛名称、轮次、桌号大于0的行红方安桌号排序
3、把比赛积分表指定棋赛名称、轮次、桌号大于0的行黑方安桌号排序
4、统计上面1的行数循环除2后取最大值确定查询表要显示的行数
5、当桌号大于0时,要获取的已安1排序的比赛积分表(执行循环条件到此的)行数除2后取最大值小于上面2的红方行数统计,小于等于上面3的黑方行数统计,则把编号、姓名、上轮止累计积分、曾交战对手累计积分、当前局成绩安上面2排序的红方数据安上面4的行数位置引用到查询表红方,同理把编号、姓名、上轮止累计积分、曾交战对手累计积分、当前局成绩安上面3排序的黑方数据安上面4的行数位置引用到查询表黑方;
  当桌号大于0时,要获取的已安1排序的比赛积分表(执行循环条件到此的)行数除2后取最大值小于等于红方统计行数,大于黑方统计,则把编号、姓名、上轮止累计积分、曾交战对手累计积分、当前局成绩安上面2排序的红方数据安上面4的行数位置引用到查询表红方,查询表黑方编号、姓名为空,上轮止累计积分、曾交战对手累计积分、当前局成绩为0.
  当桌号大于0时,要获取的已安1排序的比赛积分表(执行循环条件到此的)行数除2后取最大值大于红方统计行数,小于等于黑方统计,查询表红方编号、姓名为空,上轮止累计积分、曾交战对手累计积分、当前局成绩为0,把编号、姓名、上轮止累计积分、曾交战对手累计积分、当前局成绩安上面2排序的红方数据安上面4的行数位置引用到查询表黑方。
  桌号为0的代码同理编写,只是桌号=0.
[此贴子已经被作者于2020/7/1 11:12:10编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 11:45:00 [显示全部帖子]

把比赛积分表中指定的棋赛名称、轮次、分组数据复制到查询表,红、黑方都要一致。
[此贴子已经被作者于2020/7/1 11:45:36编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 11:54:00 [显示全部帖子]

其实排序后,桌号就是它们的位置了,我呆会改一下。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 14:01:00 [显示全部帖子]

For Each s As String In DataTables("比赛积分").SQLGetValues("桌号","[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] > 0","桌号")
这代码我不明,为什么设为字符型呢?之后dr("桌号") = s,列属性定义桌号为数字型,有冲突吧?


 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 14:17:00 [显示全部帖子]

执行你的代码只生成了桌号,其余无数据生成!

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 14:22:00 [显示全部帖子]

我的代码还有问题,不过思路在这了。

        Dim drs6 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] > 0 And [红黑方] = '红方'","","桌号")

        Dim drs7 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] > 0 And [红黑方] = '黑方'","","桌号")

        For x1 As Integer = 0 To (drs6.Count + 1) \ 2

            Dim cx As DataRow = DataTables("查询").AddNew

            If x1 >= drs7.Count Then

                cx("桌号") = drs6(x1)("桌号")

                cx("红方_编号") = drs6(x1)("编号")

                cx("红方_姓名") = drs6(x1)("姓名")

                cx("红方_上轮止累计积分") = drs6(x1)("上轮止累计积分")

                cx("红方_曾交战对手累计积分") = drs7(x1)("曾交战对手累计积分")

                cx("当前局成绩_红方") = IIF(drs6(x1).IsNull("积分"),"0",drs6(x1)("积分"))

            ElseIf x1 < drs7.Count Then

                cx("红方_编号") = Nothing

                cx("红方_姓名") = Nothing

                cx("红方_上轮止累计积分") = 0

                cx("红方_曾交战对手累计积分") = 0

                cx("当前局成绩_红方") = 0

            End If

        Next

        For h1 As Integer = 0 To (drs7.Count + 1) \ 2

            If h1 >= drs6.Count Then

                cx("黑方_编号") = drs7(h1)("编号")

                cx("黑方_姓名") = drs7(h1)("姓名")

                cx("黑方_上轮止累计积分") = drs7(h1)("上轮止累计积分")

                cx("黑方_曾交战对手累计积分") = drs7(h1)("曾交战对手累计积分")

                cx("当前局成绩_黑方") = IIF(drs7(h1).IsNull("积分"),"0",drs7(h1)("积分"))

            ElseIf h1 < drs6.Count Then

                Dim cx As DataRow = DataTables("查询").AddNew

                cx("桌号") = drs7(h1)(""桌号"")               提示这里报错

                cx("黑方_编号") = Nothing

                cx("黑方_姓名") = Nothing

                cx("黑方_上轮止累计积分") = 0

                cx("黑方_曾交战对手累计积分") = 0

                cx("当前局成绩_黑方") = 0

            End If

        Next

        Dim drs8 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] = 0 And [红黑方] = '红方'","","桌号")

        Dim drs9 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] = 0 And [红黑方] = '黑方'","","桌号")

        For x2 As Integer = 0 To (drs8.Count + 1) \ 2

            Dim cx As DataRow = DataTables("查询").AddNew

            If x2 >= drs9.Count Then

                cx("桌号") = drs8(x2)("桌号")

                cx("红方_编号") = drs8(x2)("编号")

                cx("红方_姓名") = drs8(x2)("姓名")

                cx("红方_上轮止累计积分") = drs8(x2)("上轮止累计积分")

                cx("红方_曾交战对手累计积分") = drs8(x2)("曾交战对手累计积分")

                cx("当前局成绩_红方") = IIF(drs8(x2).IsNull("积分"),"0",drs8(x2)("积分"))

            ElseIf x2 < drs9.Count Then

                cx("红方_编号") = Nothing

                cx("红方_姓名") = Nothing

                cx("红方_上轮止累计积分") = 0

                cx("红方_曾交战对手累计积分") = 0

                cx("当前局成绩_红方") = 0

            End If

        Next

        For h2 As Integer = 0 To (drs9.Count + 1) \ 2

            If h2 >= drs8.Count Then

                cx("黑方_编号") = drs9(h2)("编号")

                cx("黑方_姓名") = drs9(h2)("姓名")

                cx("黑方_上轮止累计积分") = drs9(h2)("上轮止累计积分")

                cx("黑方_曾交战对手累计积分") = drs9(h2)("曾交战对手累计积分")

                cx("当前局成绩_黑方") = IIF(drs9(h2).IsNull("积分"),"0",drs9(h2)("积分"))

            ElseIf h2 < drs8.Count Then

                Dim cx As DataRow = DataTables("查询").AddNew

                cx("桌号") = drs9(h2)(""桌号"")

                cx("红方_编号") = Nothing

                cx("黑方_姓名") = Nothing

                cx("黑方_上轮止累计积分") = 0

                cx("黑方_曾交战对手累计积分") = 0

                cx("当前局成绩_黑方") = 0

            End If

        Next

[此贴子已经被作者于2020/7/1 16:33:50编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 14:38:00 [显示全部帖子]

行了,谢谢指教。
 Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称")
        Dim di1 As String = qsmc.Value
        Dim m As WinForm.TextBox = e.Form.Controls("第几轮")
        Dim di2 As String = m.Value
        Dim fz As WinForm.ComboBox = e.Form.Controls("fenzhu")
        Dim Str As String = fz.Value
        DataTables("查询").DataRows.Clear
For Each s As String In DataTables("比赛积分").SQLGetValues("桌号","[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] > 0","桌号")
            Dim nr As DataRow = DataTables("查询").AddNew
            nr("桌号") = s
            Dim dr As DataRow = DataTables("比赛积分").SQLFind("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] = " & s & " and 红黑方='红方'")
            If dr IsNot Nothing Then
                nr("红方_编号") = dr("编号")
                nr("红方_姓名") = dr("姓名")
                nr("红方_上轮止累计积分") = dr("上轮止累计积分")
                nr("红方_曾交战对手累计积分") = dr("曾交战对手累计积分")
                nr("当前局成绩_红方") = dr("积分")
            End If
            dr  = DataTables("比赛积分").SQLFind("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] = " & s & " and 红黑方='黑方'")
            If dr IsNot Nothing Then
                nr("黑方_编号") = dr("编号")
                nr("黑方_姓名") = dr("姓名")
                nr("黑方_上轮止累计积分") = dr("上轮止累计积分")
                nr("黑方_曾交战对手累计积分") = dr("曾交战对手累计积分")
                nr("当前局成绩_黑方") = dr("积分")
            End If
        Next
For Each s1 As String In DataTables("比赛积分").SQLGetValues("桌号","[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] = 0","桌号")
            Dim nr As DataRow = DataTables("查询").AddNew
            nr("桌号") = 0
            Dim dr As DataRow = DataTables("比赛积分").SQLFind("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] = " & s1 & " and 红黑方='红方'")
            If dr IsNot Nothing Then
                nr("红方_编号") = dr("编号")
                nr("红方_姓名") = dr("姓名")
                nr("红方_上轮止累计积分") = dr("上轮止累计积分")
                nr("红方_曾交战对手累计积分") = dr("曾交战对手累计积分")
                nr("当前局成绩_红方") = dr("积分")
            End If
            dr  = DataTables("比赛积分").SQLFind("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] = " & s1 & " and 红黑方='黑方'")
            If dr IsNot Nothing Then
                nr("黑方_编号") = dr("编号")
                nr("黑方_姓名") = dr("姓名")
                nr("黑方_上轮止累计积分") = dr("上轮止累计积分")
                nr("黑方_曾交战对手累计积分") = dr("曾交战对手累计积分")
                nr("当前局成绩_黑方") = dr("积分")
            End If
        Next           

[此贴子已经被作者于2020/7/1 14:40:19编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 14:58:00 [显示全部帖子]

哦,明白了,我把For Each s As String In DataTables("比赛积分").SQLGetValues("桌号","[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [分组] = '" & Str & "' And [桌号] > 0","桌号")
改为Integer也可以,不报错,还是用Integer,跟列属性设置一致。

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 15:16:00 [显示全部帖子]

综合组第3轮桌号为0,不能用你的方法,缺赛人数超过3人,代码增加行数不够了。
[此贴子已经被作者于2020/7/1 15:33:51编辑过]

 回到顶部
美女呀,离线,留言给我吧!
采菊东篱下
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/7/1 15:18:00 [显示全部帖子]

我觉得还是我的方法通用。

 回到顶部
总数 22 上一页 1 2 3 下一页