这样写在没有生成红色标注的控件时直接报控件不存在,我想如果控件不存在时点按钮保存直接取消操作,不弹出提示,其他代码没问题,我测试过了。
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编辑过]