Foxtable(狐表)用户栏目专家坐堂 → 向下移一行


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

主题:向下移一行

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


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

我通过临时表在临时表移动好上下行,再搬回比赛积表分,这样处理还是报错:
.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2021.12.22.1
错误所在事件:菜单,个人赛排座,Click
详细错误信息:
Public member 'Position' on type 'String' not found.

Dim drs2 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "'")
            Dim cmd As new SQLCommand
            Dim t As DataTable
            cmd.CommandText = "Select * Fro m {比赛积分} WHERE [团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "' Order by 积分 Desc"
            t = cmd.ExecuteReader(True)
            t.Save()
            Dim b As New GroupTableBuilder("统计表1",t)
            b.Groups.AddDef("棋赛名称")
            b.Groups.AddDef("棋赛副名")
            b.Groups.AddDef("团体赛或个人赛")
            b.Groups.AddDef("第几轮比赛")
            b.Groups.AddDef("分组")
            b.Groups.AddDef("编号")
            b.Groups.AddDef("姓名")
            b.Totals.AddDef("排序")
            b.Totals.AddDef("上轮止累计积分")
            b.Totals.AddDef("曾交战对手累计积分")
            b.Build()
            MainTable = Tables("统计表1")
            For ia1 As Integer = 0 To Tables("统计表1").rows.count-1 Step 2
                If ia1+1 < Tables("统计表1").Rows.Count Then
                    For ia As Integer = 0 To drs2.Count - 1
                        Dim dr2a1 As DataRow = DataTables("比赛积分").SQLFind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "' And [排序] = " & drs2(ia)("排序") & " And ([编号] <> '" & drs2(ia)("编号") & "'or [姓名] <> '" & drs2(ia)("姓名") & "')")
                        If Tables("统计表1").Rows(ia1+1)("编号") = dr2a1("编号") Then
                            With Tables("统计表1").Rows(ia1+1)("编号")
                                .Move(.Position + 1)
                            End With
                        End If
                    Next
                End If
            Next
            For ia2 As Integer = 0 To Tables("统计表1").Rows.Count - 1
                dr = DataTables("比赛积分").AddNew
                Dim dts1 As DataRow = DataTables("基本信息").SQLFind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [分组] = '" & Str & "' And [身份] = '参赛人' And [缺赛轮号] like '%" & di2 & "%' and [编号] = '" & Tables("统计表1").Rows(ia2)("编号") & "'")
                If dts1 IsNot Nothing Then
                    dr("排序") = 0
                Else
                    dr("排序") = math.Ceiling(ii2 / 2)
                    ii2 + = 1
                End If
                dr("棋赛名称") = di1
                dr("棋赛副名") = Forms("主窗口").Controls("TextBox4").text
                dr("第几轮比赛") = di2
                dr("日期") = di3
                dr("上轮名次") = Tables("统计表1").Rows(ia2)("名次")
                dr("编号") = Tables("统计表1").Rows(ia2)("编号")
                dr("姓名") = Tables("统计表1").Rows(ia2)("姓名")
                dr("团体赛或个人赛") = lx
                dr("分组") = Str
                dr("上轮止累计积分") = Tables("统计表1").Rows(ia2)("积分")
                dr("曾交战对手累计积分") = DataTables("比赛积分").SQLCompute("SUM(积分)","[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [分组] = '" & Str & "' And [排序] = " & Tables("统计表1").Rows(ia2)("排序") & " And ([编号] <> '" & Tables("统计表1").Rows(ia2)("编号") & "'or [姓名] <> '" & Tables("统计表1").Rows(ia2)("姓名") & "')")
            Next
            DataTables("比赛积分").Load
            DataTables("比赛积分").Save()

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


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

                            With Tables("统计表1")
                                .Move(.Position + 1)
                            End With

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


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


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

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


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

                            With Tables("统计表1")
                                .Rows(ia1+1).Move(.Position + 1)
                            End With

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


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

这样写,一、dt表上、下行位置并没有对调,依然与上轮对手对战,只是换了红、黑方。
二、
图片点击可在新窗口打开查看此主题相关图片如下:qq图片20220101130112.png
图片点击可在新窗口打开查看
三、执行第二次生成排座,清除数据过渡表中的数据时报错,连表头也没有了,无法生成新的数据。
        ElseIf di2 = 2 And cnt = 0 Then
            Dim dt As WinForm.Table
            Dim tab1 As WinForm.TabControl = Forms("主窗口").Controls("TabControl1")
            Dim mc1 As String = "临时过渡取数"
            If tab1.TabPages.Contains(mc1) = False Then
                tab1.TabPages.Add(mc1,mc1)
                dt = Forms("主窗口").CreateSQLTable("Table'" & mc1 & "'","Select * Fr om {数据过渡表}","")
                dt.SetBounds(0, 0, 1300, 580)
                Forms("主窗口").Controls("TabControl1").Tabpages(mc1).AddControl(dt)
                Forms("主窗口").Controls("TabControl1").SelectedIndex = tab1.TabPages.count + 1
            Else
                dt = Forms("主窗口").Controls("Table'" & mc1 & "'")
            End If
            dt.Table.SetColVisibleWidth("日期|60|棋赛名称|100|棋赛副名|100|第几轮比赛|60|上轮名次|50|编号|30|姓名|60|团体赛或个人赛|90|分组|80|上轮止累计积分|90|曾交战对手累计积分|90")
            dt.Table.SetHeaderRowHeight(20,40)
            dt.Table.DataTable.DataRows.Clear
            Dim drs2 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "'","","积分 Desc")
            For ia As Integer = 0 To drs2.Count - 1
                Dim t As Row = dt.Table.AddNew()
                t("棋赛名称") = di1
                t("棋赛副名") = Forms("主窗口").Controls("TextBox4").text
                t("第几轮比赛") = di2
                t("日期") = di3
                t("上轮名次") = drs2(ia)("名次")
                t("编号") = drs2(ia)("编号")
                t("姓名") = drs2(ia)("姓名")
                t("团体赛或个人赛") = lx
                t("分组") = Str
                t("上轮止累计积分") = drs2(ia)("积分")
                t("曾交战对手累计积分") = DataTables("比赛积分").SQLCompute("SUM(积分)","[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [分组] = '" & Str & "' And [排序] = " & drs2(ia)("排序") & " And ([编号] <> '" & drs2(ia)("编号") & "'or [姓名] <> '" & drs2(ia)("姓名") & "')")
            Next
            dt.Table.Save()
            For ia1 As Integer = 0 To dt.Table.rows.count-1 Step 2
                If ia1+1 < dt.Table.Rows.Count Then
                    For ia As Integer = 0 To drs2.Count - 1
                        Dim dr2a1 As DataRow = DataTables("比赛积分").SQLFind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "' And [排序] = " & drs2(ia)("排序") & " And ([编号] <> '" & drs2(ia)("编号") & "'or [姓名] <> '" & drs2(ia)("姓名") & "')")
                        If dt.Table.Rows(ia1+1)("编号") = dr2a1("编号") Then
                            With dt.Table
                                .Rows(ia1+1).Move(.Position + 1)
                            End With
                        End If
                    Next
                End If
            Next
            dt.Table.Save()

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


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

改为这样临时过渡取数表有数据显示了,但红色标注代码并无互换上、下行,同时要搬回比赛积分表中的数据并无显示。
ElseIf di2 = 2 And cnt = 0 Then
            Dim dt As WinForm.Table
            Dim tab1 As WinForm.TabControl = Forms("主窗口").Controls("TabControl1")
            Dim mc1 As String = "临时过渡取数"
            If tab1.TabPages.Contains(mc1) = False Then
                tab1.TabPages.Add(mc1,mc1)
                dt = Forms("主窗口").CreateSQLTable("Table'" & mc1 & "'","Select * Fr om {数据过渡表}","")
                dt.SetBounds(0, 0, 1300, 580)
                Forms("主窗口").Controls("TabControl1").Tabpages(mc1).AddControl(dt)
                Forms("主窗口").Controls("TabControl1").SelectedIndex = tab1.TabPages.count + 1
            Else
                dt = Forms("主窗口").Controls("Table'" & mc1 & "'")
            End If
            dt.Table.SetColVisibleWidth("日期|60|棋赛名称|100|棋赛副名|100|第几轮比赛|60|上轮名次|50|编号|30|姓名|60|团体赛或个人赛|90|分组|80|上轮止累计积分|90|曾交战对手累计积分|90")
            dt.Table.SetHeaderRowHeight(20,40)
            dt.Table.DataTable.DataRows.Clear
            Dim drs2 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "'","","积分 Desc")
            For ia As Integer = 0 To drs2.Count - 1
                Dim t As Row = dt.Table.AddNew()
                t("棋赛名称") = di1
                t("棋赛副名") = Forms("主窗口").Controls("TextBox4").text
                t("第几轮比赛") = di2
                t("日期") = di3
                t("上轮名次") = drs2(ia)("名次")
                t("编号") = drs2(ia)("编号")
                t("姓名") = drs2(ia)("姓名")
                t("团体赛或个人赛") = lx
                t("分组") = Str
                t("上轮止累计积分") = drs2(ia)("积分")
                t("曾交战对手累计积分") = DataTables("比赛积分").SQLCompute("SUM(积分)","[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [分组] = '" & Str & "' And [排序] = " & drs2(ia)("排序") & " And ([编号] <> '" & drs2(ia)("编号") & "'or [姓名] <> '" & drs2(ia)("姓名") & "')")
            Next
            dt.Table.Save()
            For ia1 As Integer = 0 To dt.Table.rows.count-1 Step 2
                If ia1+1 < dt.Table.Rows.Count Then
                    Dim dr2a1 As DataRow = DataTables("比赛积分").SQLFind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & " And ([编号] = '" & dt.Table.Rows(ia1)("编号") & "'or [姓名] = '" & dt.Table.Rows(ia1)("姓名") & "')")
                    Dim dr2a2 As DataRow = DataTables("比赛积分").SQLFind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "' And [排序] = " & dr2a1("排序") & " And ([编号] <> '" & dt.Table.Rows(ia1)("编号") & "'or [姓名] <> '" & dt.Table.Rows(ia1)("姓名") & "')")
                    If dt.Table.Rows(ia1+1)("编号") = dr2a2("编号") Then
                        With dt.Table
                            .Rows(ia1+1).Move(.Position + 1)
                        End With
                    End If
                End If
            Next
            dt.Table.Save()
            For ia2 As Integer = 0 To dt.Table.Rows.Count - 1
                Dim dts1 As DataRow = DataTables("基本信息").SQLFind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [分组] = '" & Str & "' And [身份] = '参赛人' And [缺赛轮号] like '%" & di2 & "%' and [编号] = '" & dt.Table.Rows(ia2)("编号") & "'")
                dr = DataTables("比赛积分").AddNew
                If dts1 IsNot Nothing Then
                    dr("排序") = 0
                Else
                    dr("排序") = math.Ceiling(ii2 / 2)
                    ii2 + = 1
                End If
                dr("棋赛名称") = di1
                dr("棋赛副名") = Forms("主窗口").Controls("TextBox4").text
                dr("第几轮比赛") = di2
                dr("日期") = di3
                dr("上轮名次") = dt.Table.Rows(ia2)("名次")
                dr("编号") = dt.Table.Rows(ia2)("编号")
                dr("姓名") = dt.Table.Rows(ia2)("姓名")
                dr("团体赛或个人赛") = lx
                dr("分组") = Str
                dr("上轮止累计积分") = dt.Table.Rows(ia2)("上轮止累计积分")
                dr("曾交战对手累计积分") = dt.Table.Rows(ia2)("曾交战对手累计积分")
            Next
            DataTables("比赛积分").Load
            DataTables("比赛积分").Save()


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


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

这样写比赛积分表及排座表都显示数据了,但依然跟上一轮对手交手,只是换了先后手,我利用过渡表想调换上、下行位置就没有意义了。
Dim dt As WinForm.Table
            Dim tab1 As WinForm.TabControl = Forms("主窗口").Controls("TabControl1")
            Dim mc1 As String = "临时过渡取数"
            If tab1.TabPages.Contains(mc1) = False Then
                tab1.TabPages.Add(mc1,mc1)
                dt = Forms("主窗口").CreateSQLTable("Table'" & mc1 & "'","Select * Fr om {数据过渡表}","")
                dt.SetBounds(0, 0, 1300, 580)
                Forms("主窗口").Controls("TabControl1").Tabpages(mc1).AddControl(dt)
                Forms("主窗口").Controls("TabControl1").SelectedIndex = tab1.TabPages.count + 1
            Else
                dt = Forms("主窗口").Controls("Table'" & mc1 & "'")
            End If
            dt.Table.SetColVisibleWidth("日期|60|棋赛名称|100|棋赛副名|100|第几轮比赛|60|上轮名次|50|编号|30|姓名|60|团体赛或个人赛|90|分组|80|上轮止累计积分|90|曾交战对手累计积分|90")
            dt.Table.SetHeaderRowHeight(20,40)
            dt.Table.DataTable.DataRows.Clear
            Dim drs2 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "'","","积分 Desc")
            For ia As Integer = 0 To drs2.Count - 1
                Dim t As Row = dt.Table.AddNew()
                t("棋赛名称") = di1
                t("棋赛副名") = Forms("主窗口").Controls("TextBox4").text
                t("第几轮比赛") = di2
                t("日期") = di3
                t("上轮名次") = drs2(ia)("名次")
                t("编号") = drs2(ia)("编号")
                t("姓名") = drs2(ia)("姓名")
                t("团体赛或个人赛") = lx
                t("分组") = Str
                t("上轮止累计积分") = drs2(ia)("积分")
                t("曾交战对手累计积分") = DataTables("比赛积分").SQLCompute("SUM(积分)","[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [分组] = '" & Str & "' And [排序] = " & drs2(ia)("排序") & " And ([编号] <> '" & drs2(ia)("编号") & "'or [姓名] <> '" & drs2(ia)("姓名") & "')")
            Next
            dt.Table.Save()
            For ia1 As Integer = 0 To dt.Table.rows.count-1 Step 2
                If ia1+1 < dt.Table.Rows.Count Then
                    For ia As Integer = 0 To drs2.Count - 1
                        Dim dr2a1 As DataRow = DataTables("比赛积分").SQLFind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & Cstr(Val(di2)-1) & "' And [分组] = '" & Str & "' And [排序] = " & drs2(ia)("排序") & " And ([编号] <> '" & drs2(ia)("编号") & "'or [姓名] <> '" & drs2(ia)("姓名") & "')")
                        If dt.Table.Rows(ia1+1)("编号") = dr2a1("编号") Then
                            With dt.Table
                                .Rows(ia1+1).Move(.Position + 1)
                            End With
                        End If
                    Next
                End If
            Next
            dt.Table.Save()
            For ia2 As Integer = 0 To dt.Table.Rows.Count - 1
                Dim dts1 As DataRow = DataTables("基本信息").SQLFind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [分组] = '" & Str & "' And [身份] = '参赛人' And [缺赛轮号] like '%" & di2 & "%' and [编号] = '" & dt.Table.Rows(ia2)("编号") & "'")
                dr = DataTables("比赛积分").AddNew
                If dts1 IsNot Nothing Then
                    dr("排序") = 0
                Else
                    dr("排序") = math.Ceiling(ii2 / 2)
                    ii2 + = 1
                End If
                dr("棋赛名称") = di1
                dr("棋赛副名") = Forms("主窗口").Controls("TextBox4").text
                dr("第几轮比赛") = di2
                dr("日期") = di3
                dr("上轮名次") = dt.Table.Rows(ia2)("名次")
                dr("编号") = dt.Table.Rows(ia2)("编号")
                dr("姓名") = dt.Table.Rows(ia2)("姓名")
                dr("团体赛或个人赛") = lx
                dr("分组") = Str
                dr("上轮止累计积分") = dt.Table.Rows(ia2)("上轮止累计积分")
                dr("曾交战对手累计积分") = dt.Table.Rows(ia2)("曾交战对手累计积分")
            Next
            DataTables("比赛积分").Load
            DataTables("比赛积分").Save()


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


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

提示此类表不支持移动行,临时表我不是已改为生成Table吗?只有在Table表内才能移动行,请教它应怎么改?

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7237 积分:40614 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2022/1/3 18:41:00 [只看该作者]

可以考虑变通互换2行的数据,您的这个要求还真没有其他有效办法!

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


加好友 发短信
等级:超级版主 帖子:107718 积分:547917 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/1/3 21:26:00 [只看该作者]

以下是引用采菊东篱下在2022/1/3 11:27:00的发言:
提示此类表不支持移动行,临时表我不是已改为生成Table吗?只有在Table表内才能移动行,请教它应怎么改?

临时表如果没有_sortkey列是无法移动行的,给{数据过渡表}添加这个名称的列,高精度类型
[此贴子已经被作者于2022/1/3 21:27:33编辑过]

 回到顶部
总数 83 上一页 1 2 3 4 5 6 7 8 9 下一页