Foxtable(狐表)用户栏目专家坐堂 → 动态表的表名问题


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

主题:动态表的表名问题

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


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

直接写为:Table(str)也试过了,一样报错。

 回到顶部
帅哥,在线噢!
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

Tables(str)

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


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

.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2021.11.16.11
错误所在事件:菜单,保存,Click
详细错误信息:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index



Dim fz As WinForm.DropDownBox = Forms("主窗口").Controls("fenzhu")
Dim Str As String = fz.Value
messagebox.show(Str)
If Tables.Contains(Str) Then
messagebox.show("主窗口_" & Str)
    For Each nr As Row In Tables("主窗口_" & Str).Rows

弹出第一个窗口是老人组,第二个窗口就是上面的报错,这样合成窗口中的表不行!

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


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

都试过了不行。

 回到顶部
帅哥,在线噢!
有点蓝
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

确定控件的名称也是老人组?

既然副本Table是独立的,所以它必须有自己的名称,这样才能和原Table区分开来,其名称为 :

窗口名称_控件名称

假定副本Table控件的名称为“Table1”,所在窗口的名称为“窗口1”,那么不管其绑定到哪一个表,它的名称都是“窗口1_Table1”,我们可以通过这个名称来引用它 ,例如:

Tables("窗口1_Table1").Filter = "产品 = 'PD01'"


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


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

改为这样还是报错:
.NET Framework 版本:4.0.30319.18063
Foxtable 版本:2021.11.16.11
错误所在事件:菜单,保存,Click
详细错误信息:
Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index



Dim qsmc As WinForm.ComboBox = Forms("主窗口").Controls("棋赛名称")
Dim di1 As String = qsmc.Value
Dim m As WinForm.TextBox = Forms("主窗口").Controls("第几轮")
Dim di2 As String = m.Value
Dim bsrq As WinForm.DateTimePicker = Forms("主窗口").Controls("rq")
Dim di3 As Date = bsrq.Value
Dim bslx As WinForm.TextBox = Forms("主窗口").Controls("bslx")
Dim lx As String = bslx.Value
Dim fz As WinForm.DropDownBox = Forms("主窗口").Controls("fenzhu")
Dim Str As String = fz.Value
Dim tbl As WinForm.Table
Dim tab As WinForm.TabControl = Forms("主窗口").Controls("TabControl1")
If tab.TabPages.Contains(Str) Then
    tbl = Forms("主窗口").Controls("Table'" & Str & "'")
    For Each nr As Row In tbl.Table.Rows
        Dim dr1 As DataRow = DataTables("比赛积分").SQLfind("[团体赛或个人赛] = '" & lx & "'And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & di2 & "' And [所属团体或个人分组] = '" & Str & "' And [编号] = '" & nr("红方_编号") & "' And [姓名] = '" & nr("红方_姓名") & "'")
        If dr1 IsNot Nothing Then
            If nr("桌号") > 0  Then
                dr1("积分") = nr("当前局成绩_红方")
                If di2 = 1 Then
                    dr1("红黑方") = "红方"
                    dr1("本轮止累计积分") = nr("当前局成绩_红方")
                    dr1("本次止曾交战对手累计积分") = nr("当前局成绩_黑方")
                ElseIf di2 >= 2 Then
                    dr1("本轮止累计积分") = nr("红方_上轮止累计积分") + nr("当前局成绩_红方")
                    dr1("本次止曾交战对手累计积分") = nr("红方_曾交战对手累计积分") + nr("当前局成绩_黑方")
                End If
            ElseIf nr.IsNull("桌号") And dr1("编号") = nr("红方_编号") Then
                dr1("红黑方") = "红方"
                dr1("积分") = 0
                If di2 = 1 Then
                    dr1("本轮止累计积分") = nr("当前局成绩_红方")
                    dr1("本次止曾交战对手累计积分") = nr("当前局成绩_黑方")
                ElseIf di2 >= 2 Then
                    dr1("本轮止累计积分") = nr("红方_上轮止累计积分") + nr("当前局成绩_红方")
                    dr1("本次止曾交战对手累计积分") = nr("红方_曾交战对手累计积分") + nr("当前局成绩_黑方")
                End If
            End If
            dr1.Save
        End If
        Dim dr2 As DataRow = DataTables("比赛积分").SQLfind("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "' And [第几轮比赛] = '" & di2 & "' And [所属团体或个人分组] = '" & Str & "' And [编号]='" & nr("黑方_编号") & "'And [姓名] = '" & nr("黑方_姓名") & "'")
        If dr2 IsNot Nothing Then
            If di3 <> Nothing Then
                dr2("日期") = di3
            End If
            If nr("桌号") > 0 Then
                dr2("红黑方") = "黑方"
                dr2("积分") = nr("当前局成绩_黑方")
                If di2 = 1 Then
                    dr2("本轮止累计积分") = nr("当前局成绩_黑方")
                    dr2("本次止曾交战对手累计积分") = nr("当前局成绩_红方")
                ElseIf di2 >= 2 Then
                    dr2("本轮止累计积分") = nr("黑方_上轮止累计积分") + nr("当前局成绩_黑方")
                    dr2("本次止曾交战对手累计积分") = nr("黑方_曾交战对手累计积分") + nr("当前局成绩_黑方")
                End If
            ElseIf nr.IsNull("桌号") And dr2("编号") = nr("黑方_编号") Then
                dr2("红黑方") = "黑方"
                dr2("积分") = 0
                If di2 = 1 Then
                    dr2("本轮止累计积分") = nr("当前局成绩_黑方")
                    dr2("本次止曾交战对手累计积分") = nr("当前局成绩_红方")
                ElseIf di2 >= 2 Then
                    dr2("本轮止累计积分") = nr("黑方_上轮止累计积分") + nr("当前局成绩_黑方")
                    dr2("本次止曾交战对手累计积分") = nr("黑方_曾交战对手累计积分") + nr("当前局成绩_红方")
                End If
            End If
            dr2.Save
        End If
    Next
End If
Dim drs As List(of DataRow) = DataTables("比赛积分").SQLSelect("[团体赛或个人赛] = '" & lx & "' And [棋赛名称] = '" & di1 & "'And [第几轮比赛] = '" & di2 & "' And [所属团体或个人分组] = '" & Str & "'","","本轮止累计积分 Desc,本次止曾交战对手累计积分 Desc")
If drs IsNot Nothing Then
    Dim i1 As Integer = 1
    For n As Integer = 0 To drs.Count - 1 '遍历所有行
        If n > 0 Then
            drs(n)("名次") = 1
        ElseIf n > 0 And (drs(n)("本轮止累计积分") = drs(n-1)("本轮止累计积分") AndAlso drs(n)("本次止曾交战对手累计积分") > drs(n-1)("本次止曾交战对手累计积分") Or (drs(n)("本轮止累计积分") > drs(n-1)("本轮止累计积分"))) Then
            i1 = i1 + 1
            drs(n)("名次") = i1
        Else
            i1 = i1
            drs(n)("名次") = i1
        End If
    Next
End If
DataTables("比赛积分").SQLUpdate(drs)
DataTables("比赛积分").load
[此贴子已经被作者于2021/11/15 14:10:43编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

窗口中的Table】这章帮助的内容全部都仔细看一看吧:http://www.foxtable.com/webhelp/topics/1905.htm

 回到顶部
帅哥,在线噢!
有点蓝
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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


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

tbl = Forms("主窗口").Controls("Table1")

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


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

它是动态生成的表,Table就是tbl

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


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

这表在排座时是用代码生成的。

Dim tbl As WinForm.Table

Dim tab As WinForm.TabControl = Forms("主窗口").Controls("TabControl1")

If tab.TabPages.Contains(Str) = False Then

    tab.TabPages.Add(Str,Str)

    tbl = Forms("主窗口").CreateSQLTable("Table'" & Str & "'","Select * Fro m {综合组}","")

    tbl.SetBounds(0, 0, 983, 580)

    Forms("主窗口").Controls("TabControl1").Tabpages(Str).AddControl(tbl)

    Forms("主窗口").Controls("TabControl1").SelectedIndex = tab.TabPages.count + 1

Else

    tbl = Forms("主窗口").Controls("Table'" & Str & "'")

End If


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