以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  如果控件不存在,取消操作  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=174602)

--  作者:采菊东篱下
--  发布时间:2022/1/22 17:12:00
--  如果控件不存在,取消操作
这样写在没有生成红色标注的控件时直接报控件不存在,我想如果控件不存在时点按钮保存直接取消操作,不弹出提示,其他代码没问题,我测试过了。
    Dim Str As String = fz.Value
    If Forms("主窗口").Controls("fenzhu").text = "" Then
        messagebox.show("请选择分组")
        Return
    End If
    Dim tbl As WinForm.Table = Forms("主窗口").Controls("Table\'" & Str & "\'")
    If Forms("主窗口").ExistControl("Table\'" & Str & "\'") Then
 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)("名次") = i1
                ElseIf n > 0 Then
                    If drs(n)("本轮止累计积分") = drs(n-1)("本轮止累计积分") AndAlso drs(n)("本轮止曾交战对手累计积分") = drs(n-1)("本轮止曾交战对手累计积分") Then
                        i1 = i1
                        drs(n)("名次") = i1
                    ElseIf drs(n)("本轮止累计积分") < drs(n-1)("本轮止累计积分") _
                        OrElse (drs(n)("本轮止累计积分") = drs(n-1)("本轮止累计积分") AndAlso drs(n)("本轮止曾交战对手累计积分") < drs(n-1)("本轮止曾交战对手累计积分")) _
                        OrElse (drs(n)("本轮止累计积分") = drs(n-1)("本轮止累计积分") AndAlso drs(n)("本轮止曾交战对手累计积分") > drs(n-1)("本轮止曾交战对手累计积分")) _
                        OrElse drs(n)("本轮止累计积分") > drs(n-1)("本轮止累计积分") Then
                        i1 = i1 + 1
                        drs(n)("名次") = i1
                    End If
                End If
                drs(n).Save
            Next
        End If
        DataTables("比赛积分").SQLUpdate(drs)
        DataTables("比赛积分").load
    Else
        Return
    End If

[此贴子已经被作者于2022/1/22 17:12:22编辑过]

--  作者:有点蓝
--  发布时间:2022/1/22 17:20:00
--  
调换位置咯,先判断再使用

    If Forms("主窗口").ExistControl("Table\'" & Str & "\'") Then
    Dim tbl As WinForm.Table = Forms("主窗口").Controls("Table\'" & Str & "\'")