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


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

主题:想做一个排位表

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


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

密码:888888
比赛积分表的桌号顺序怎么降序了!跟对阵表的桌号不一致啊!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛.foxdb


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 Integer = m.Value
Dim bsrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim di3 As Date = bsrq.Value
Dim dts As List(of DataRow) = DataTables("基本信息").SQLSelect("[棋赛名称] = '" & di1 & "'And [身份] = '参赛人'")
Dim dr As DataRow = DataTables("比赛积分").SQLfind("[棋赛名称] = '" & di1 & "'")
If DataTables("比赛积分").DataRows.count = 0 OrElse dr Is Nothing Then
    di2 = 1
    Do While dts.Count > 0
        Dim idx As Integer = rand.Next(0,dts.Count-1)
        dr = DataTables("比赛积分").AddNew()
        dr("桌号") = (dts.Count + 1)\ 2
        dr("日期") = di3
        dr("棋赛名称") = di1
        dr("第几轮比赛") = di2
        dr("编号") = dts(idx)("编号")
        dr("姓名") = dts(idx)("姓名")
        dts.RemoveAt(idx)
    Loop
    DataTables("比赛积分").Save()
    DataTables("对阵表").DataRows.Clear
    Dim drs As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = " & di2)
    Dim nr As DataRow
    Dim i2 As Integer = 1
    For i As Integer = 0 To drs.Count - 1 Step 2
        If i+1 <= drs.Count - 1
            nr = DataTables("对阵表").AddNew()
            nr("桌号") = i2
            nr("红方_编号") = drs(i)("编号")
            nr("红方_姓名") = drs(i)("姓名")
            nr("黑方_编号") = drs(i+1)("编号")
            nr("黑方_姓名") = drs(i+1)("姓名")
            i2 += 1
        End If
    Next
End If

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


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

If DataTables("比赛积分").DataRows.count = 0 OrElse dr Is Nothing Then
    di2 = 1
Dim i2 As Integer = 1
    Do While dts.Count > 0
        Dim idx As Integer = rand.Next(0,dts.Count-1)
        dr = DataTables("比赛积分").AddNew()
        dr("桌号") = math.Ceiling(i2 \ 2)
        dr("日期") = di3
        dr("棋赛名称") = di1
        dr("第几轮比赛") = di2
        dr("编号") = dts(idx)("编号")
        dr("姓名") = dts(idx)("姓名")
        dts.RemoveAt(idx)
i2 += 1
    Loop
    DataTables("比赛积分").Save()
    DataTables("对阵表").DataRows.Clear
    Dim drs As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = " & di2,"","桌号")
    Dim nr As DataRow
    
    For i As Integer = 0 To drs.Count - 1 Step 2
        If i+1 <= drs.Count - 1
            nr = DataTables("对阵表").AddNew()
            nr("桌号") = drs(i)("桌号")
            nr("红方_编号") = drs(i)("编号")
            nr("红方_姓名") = drs(i)("姓名")
            nr("黑方_编号") = drs(i+1)("编号")
            nr("黑方_姓名") = drs(i+1)("姓名")
            i2 += 1
        End If
    Next
End If

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


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

  有点不明白

Do While 条件
    代码

Loop

  不是应该从小到大吗?怎么桌号变成由大到小呢?如果不在表事件用

Tables("比赛积分").Sort = "桌号 DESC"

方法排序,也不用表头升序功能,直接在生成桌号时就安由小到大生成行吗?怎么写?


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


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

dr("桌号") = (dts.Count + 1)\ 2

dts.Count是从多到少变化的,所以就是大到小,简单的数学问题,和do while没有半毛钱关系

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


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

  哦,明白了,我真晕了我理解是由DO语句生成的数值,逐增赋值给它的,忘了个数-1就是递减。

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


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

密码:888888
  在对阵表窗口的综合排座按钮下我定了红色标注代码,不是已经排除基本信息表缺赛轮号列中含有第几轮字符数据吗?其姓名、编号都不应计入排座,但是结果人数照统计,姓名照排座!哦姓名、编号并没排除在外!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:象棋排赛.foxdb


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 bsrq As WinForm.DateTimePicker = e.Form.Controls("rq")
Dim di3 As Date = bsrq.Value
Dim dr As DataRow = DataTables("比赛积分").SQLfind("[棋赛名称] = '" & di1 & "'")
If DataTables("比赛积分").DataRows.count = 0 OrElse dr Is Nothing Then
    Dim dts As List(of DataRow) = DataTables("基本信息").SQLSelect("[棋赛名称] = '" & di1 & "'And [身份] = '参赛人'")
    Dim i2 As Integer = 1
    Do While dts.Count > 0
        Dim idx As Integer = rand.Next(0,dts.Count-1)
        dr = DataTables("比赛积分").AddNew()
        dr("桌号") = math.Ceiling((i2+1) \ 2)
        dr("日期") = di3
        dr("棋赛名称") = di1
        dr("第几轮比赛") = di2
        dr("编号") = dts(idx)("编号")
        dr("姓名") = dts(idx)("姓名")
        dts.RemoveAt(idx)
        i2 += 1
    Loop
    DataTables("比赛积分").Save()
    DataTables("对阵表").DataRows.Clear
    Dim drs As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "'","","桌号")
    Dim nr As DataRow
    For i As Integer = 0 To drs.Count - 1 Step 2
        If i+1 <= drs.Count - 1
            nr = DataTables("对阵表").AddNew()
            nr("桌号") = drs(i)("桌号")
            nr("红方_编号") = drs(i)("编号")
            nr("红方_姓名") = drs(i)("姓名")
            nr("黑方_编号") = drs(i+1)("编号")
            nr("黑方_姓名") = drs(i+1)("姓名")
        End If
    Next
Else
    Dim dts As List(of DataRow) = DataTables("基本信息").SQLSelect("[棋赛名称] ='" & di1 & "'And [身份] = '参赛人' And ([缺赛轮号] Is Null or [缺赛轮号] Not Like '" & di2 & "*' or [缺赛轮号] Not Like '*" & di2 & "*' or [缺赛轮号] Not Like '*" & di2 & "')")
    Dim dr1 As DataRow = DataTables("比赛积分").SQLfind("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "'")
    If dr1 Is Nothing Then
        Dim i2 As Integer = 1
        Do While dts.Count > 0
            Dim idx As Integer = rand.Next(0,dts.Count-1)
            dr1 = DataTables("比赛积分").AddNew()
            dr1("桌号") = math.Ceiling((i2+1) \ 2)
            dr1("日期") = di3
            dr1("棋赛名称") = di1
            dr1("第几轮比赛") = di2
            dr1("编号") = dts(idx)("编号")
            dr1("姓名") = dts(idx)("姓名")
            dts.RemoveAt(idx)
            i2 += 1
        Loop
        DataTables("比赛积分").Save()
        DataTables("对阵表").DataRows.Clear
        Dim drs As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "'","","桌号")
        Dim nr As DataRow
        For i As Integer = 0 To drs.Count - 1 Step 2
            If i+1 <= drs.Count - 1
                nr = DataTables("对阵表").AddNew()
                nr("桌号") = drs(i)("桌号")
                nr("红方_编号") = drs(i)("编号")
                nr("红方_姓名") = drs(i)("姓名")
                nr("黑方_编号") = drs(i+1)("编号")
                nr("黑方_姓名") = drs(i+1)("姓名")
            End If
        Next
    End If
End If
[此贴子已经被作者于2020/5/11 8:44:06编辑过]

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


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

红色代码改为
Dim dts As List(of DataRow) = DataTables("基本信息").SQLSelect("[棋赛名称] ='" & di1 & "'And [身份] = '参赛人' And ([缺赛轮号] Is Null or [缺赛轮号] Not Like '%" & di2 & "%')")

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


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

%表示什么?

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


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

http://www.foxtable.com/webhelp/topics/0102.htm

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


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

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

密码:888888

图片点击可在新窗口打开查看此主题相关图片如下:截图1.png
图片点击可在新窗口打开查看

对阵表窗口里综合排座按钮的这段代码不报错,但第2轮比赛时不生成数据,我想实现同赛第一轮比赛在对阵表随机红黑方、随机编号,安桌号顺号排座;第2轮比赛如果基本信息表中的缺赛轮号包含当前第几轮比赛号,则只显示上轮止累计积分、曾交战对手累计积分,不排号,其余的随机红黑方、安比赛积分表第一轮的积分由高至低排序,顺桌号排座;第3轮比赛如果基本信息表中的缺赛轮号包含当前第几轮比赛号,则只显示上轮止累计积分、曾交战对手累计积分,不排号,其余的随机红黑方、安比赛积分表上轮止累计积分、曾交战对手累计积分由高至低排序顺桌号排座。
另外窗口中显示的对阵表与对阵表里的不一样,红方_曾交战对手累计积分列跑后面去了,怎么调都调不上来。

图片点击可在新窗口打开查看此主题相关图片如下:截图2.png
图片点击可在新窗口打开查看


[此贴子已经被作者于2020/5/21 13:59:40编辑过]

 回到顶部