Foxtable(狐表)用户栏目专家坐堂 → 想做一个排位表


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

主题:想做一个排位表

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/5/28 11:12:00 [只看该作者]

还是这样报错!

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/5/28 11:17:00 [只看该作者]

SQLCompute是后台统计,可临时表上只有一行符合条件数据,直接改为用SQLFind引用后台符合条件数据,用FIND就可以了吧,临时表没有后台数据。
[此贴子已经被作者于2020/5/28 11:18:20编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/5/28 11:21:00 [只看该作者]

无论怎么改都有上面错误提示。

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


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

SQLCompute返回的是统计结果,是一个具体的值。sqlfind返回的是一个datarow,包含整行各个列的数据。看帮助不是仅仅知道【SQLCompute是后台统计,sqlfind是一样后台符合条件的数据】就够了,具体开发的时候要了解每个功能函数都有什么参数?可以传入什么数据?最后返回的是什么结果?需要怎么使用这个结果?自己研究帮助的每一个实例代码,搞懂是怎么一回事。而不是一目十行看过了事。

这个临时表是通过SQLcommand返回的,一样可以使用SQLCompute等sqlxxx的用法取后台数据

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/5/28 11:38:00 [只看该作者]

请教一下,用SQLCommand生成的临时表,全部显示符合条件的数据吧?那么用find获取临时表上符合条件的数据就可以了吧?
[此贴子已经被作者于2020/5/28 11:38:20编辑过]

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


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

如果sql里的条件已经加载了需要的数据,直接find即可。但是要注意,这个临时表数据是固定的,不会自动更新,比如有保存了新的数据

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/5/28 12:11:00 [只看该作者]

dr7("曾交战对手累计积分") = da1("曾交战对手累计积分") + DataTables("比赛积分").SQLCompute("Sum(积分)","[桌号] = " & da1("桌号") & "And ([编号] <> '" & da1("编号") & "'Or [姓名] <> '" & da1("姓名") & "')")
这段代码可以理解为在指定棋赛的指定场,符合桌号相同,比如张三对李四在1桌,他俩桌号相同,黄五对赵六在2桌,他俩的桌号也相同,统计编号或姓名与当前行的编号、姓名不相同的积分,也就是说把除了自己的积分不统计在内,其他人所有积分都统计起来,这显示不符只统计跟自己交战过的人的积分,所以只能引用临时表中上一轮的曾交战对手累计积分+上一轮对手的当前积分。
[此贴子已经被作者于2020/5/28 13:05:33编辑过]

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/5/28 12:14:00 [只看该作者]

哦,如果用sqlfind就能自动更新吗?

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


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

sqlfind是查询数据,和自动更新一点关系都没有

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


加好友 发短信
等级:八尾狐 帖子:1881 积分:10368 威望:0 精华:0 注册:2019/4/6 8:45:00
  发帖心情 Post By:2020/6/1 12:00:00 [只看该作者]

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛.foxdb

密码:888888
之前的代码看到添加了一行,但没编号、计算数据全没,我把第2次的代码改为这样,报错

图片点击可在新窗口打开查看此主题相关图片如下:截图.png
图片点击可在新窗口打开查看
Dim drs2() As List(of DataRow) = DataTables("比赛积分").SQLFind("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "'")
    For Each dr2 As DataRow In drs2()
    Else If di2 = 2 And dr2 Is Nothing Or drs2.count <= dts.Count Then
        For Each drs3() As String In DataTables("比赛积分").SQLGetValues("桌号|编号|姓名","[棋赛名称] = '" & di1 & "'And ([第几轮比赛] = '" & a & "'","积分 Desc")
            Dim da As List(Of DataRow) = DataTables("比赛积分").SQLSelect("桌号 =" & drs3(0) & "and 编号 = '" & drs3(1)  & "'and 姓名 ='" & drs3(2) & "'")
            If drs3.Count> 0
                Dim idx1 As Integer = drs3.Count-1
                dr2 = DataTables("比赛积分").AddNew()
                dr2("棋赛名称") = di1
                dr2("第几轮比赛") = di2
                dr2("日期") = di3
                dr2("编号") = da(idx1)("编号")
                dr2("姓名") = da(idx1)("姓名")
                dr2("上轮止累计积分") = da(idx1)("积分")
                dr2("曾交战对手累计积分") = DataTables("比赛积分").SQLCompute("SUM(积分)","[桌号] = " & da(idx1)("桌号") & "And [编号] <> '" & da(idx1)("编号") & "'and [姓名] <> '" & da(idx1)("姓名") & "'")
                da.RemoveAt(idx1)
                Dim dts1 As List(of DataRow) = DataTables("基本信息").SQLSelect("[棋赛名称] = '" & di1 & "'And [身份] = '参赛人' And [缺赛轮号] like '%" & di2 & "%'")
                If dr2("编号") = dts1("编号") Then
                    dr2("桌号") = Nothing
                Else
                    dr2("桌号") = math.Ceiling((i2+1) \ 2)
                End If
            End If
            i2 += 1
        Next
        DataTables("比赛积分").Save()
        DataTables("对阵表").DataRows.Clear
        Dim drs4 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "'","","上轮止累计积分,曾交战对手累计积分 Desc")
        For i As Integer = 0 To drs4.Count - 1 Step 2
            If i+1 <= drs4.Count - 1
                Dim nr As DataRow = DataTables("对阵表").AddNew()
                nr("桌号") = drs4(i)("桌号")
                msgbox(nr("桌号"))
                nr("红方_编号") = drs4(i)("编号")
                nr("红方_姓名") = drs4(i)("姓名")
                nr("黑方_编号") = drs4(i+1)("编号")
                nr("黑方_姓名") = drs4(i+1)("姓名")
                nr("红方_上轮止累计积分") = drs4(i)("上轮止累计积分")
                nr("红方_曾交战对手累计积分") = drs4(i)("上轮止累计积分")
                nr("黑方_上轮止累计积分") = drs4(i+1)("曾交战对手累计积分")
                nr("黑方_曾交战对手累计积分") = drs4(i+1)("曾交战对手累计积分")
            End If
        Next
    Else If di2 > 2 And dr2 Is Nothing Or drs2.count <= dts.Count Then
        For Each drs5() As String In DataTables("比赛积分").SQLGetValues("桌号|编号|姓名","[棋赛名称] = '" & di1 & "'And ([第几轮比赛] = '" & a & "'","上轮止累计积分,曾交战对手累计积分 Desc")
            Dim da1 As List(Of DataRow) = DataTables("比赛积分").SQLSelect("桌号 =" & drs5(0) & "and 编号 ='" & drs5(1)  & "'and 姓名 ='" & drs5(2) & "'")
            If drs5.Count> 0
                Dim idx2 As Integer = drs5.Count-1
                dr2 = DataTables("比赛积分").AddNew()
                dr2("棋赛名称") = di1
                dr2("第几轮比赛") = di2
                dr2("日期") = di3
                dr2("编号") = da1(idx2)("编号")
                dr2("姓名") = da1(idx2)("姓名")
                dr2("上轮止累计积分") = da1(idx2)("上轮止累计积分") + da1(idx2)("积分")
                dr2("曾交战对手累计积分") = da1(idx2)("曾交战对手累计积分") + DataTables("比赛积分").SQLCompute("SUM(积分)","[桌号] = " & da1(idx2)("桌号") & "And [编号] <> '" & da1(idx2)("编号") & "'and [姓名] <> '" & da1(idx2)("姓名") & "'")
                da1.RemoveAt(idx2)
                Dim dts2 As List(of DataRow) = DataTables("基本信息").SQLSelect("[棋赛名称] = '" & di1 & "'And [身份] = '参赛人' And [缺赛轮号] like'" & di2 & "'")
                If dr2("编号") = dts2("编号") Then
                    dr2("桌号") = Nothing
                Else
                    dr2("桌号") = math.Ceiling((i2+1) \ 2)
                End If
            End If
            i2 += 1
        Next
        DataTables("比赛积分").Save()
        DataTables("对阵表").DataRows.Clear
        Dim drs6 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "'And [桌号] Is Not Null","","第几轮比赛,上轮止累计积分,曾交战对手累计积分 Desc")
        For i As Integer = 0 To drs6.Count - 1 Step 2
            If i+1 <= drs6.Count - 1
                Dim nr As DataRow = DataTables("对阵表").AddNew()
                nr("桌号") = drs6(i)("桌号")
                nr("红方_编号") = drs6(i)("编号")
                nr("红方_姓名") = drs6(i)("姓名")
                nr("黑方_编号") = drs6(i+1)("编号")
                nr("黑方_姓名") = drs6(i+1)("姓名")
                nr("红方_上轮止累计积分") = drs6(i)("上轮止累计积分")
                nr("红方_曾交战对手累计积分") = drs6(i)("上轮止累计积分")
                nr("黑方_上轮止累计积分") = drs6(i+1)("曾交战对手累计积分")
                nr("黑方_曾交战对手累计积分") = drs6(i+1)("曾交战对手累计积分")
            End If
        Next
        DataTables("比赛积分").SQLUpdate(drs6)
    Next
End If

 回到顶部
总数 120 1.. 上一页 3 4 5 6 7 8 9 10 11 12