以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 代码独自运行都正常显示,一齐运行死机了! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=180899) |
||||
-- 作者:采菊东篱下 -- 发布时间:2022/10/19 12:25:00 -- 代码独自运行都正常显示,一齐运行死机了! ![]() ![]() 下面的代码我反复测试,注识绿色代码,执行红色代码能正常执行,注识红色代码,执行绿色代码也能正常执行,全部取消注识就死机,最后显示窗口上的提示。 If Forms("主窗口").opened Then Dim qsmc As WinForm.ComboBox = Forms("主窗口").Controls("棋赛名称") Dim di1 As String = qsmc.Value If di1 = "" Then messagebox.show("请选择棋赛名称") Return End If Dim m As WinForm.TextBox = Forms("主窗口").Controls("第几轮") Dim di2 As String = m.Value If di2 = "" Then messagebox.show("请输入第几轮") Return End If Dim bsrq As WinForm.DateTimePicker = Forms("主窗口").Controls("rq") Dim di3 As Date = bsrq.Value If Forms("主窗口").Controls("rq").text = "" Then messagebox.show("请选择日期") Return End If 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 If Forms("主窗口").Controls("fenzhu").text = "" Then messagebox.show("请选择分组") Return End If If Forms("主窗口").ExistControl("Table\'" & Str & "\'") Then Dim tbl As WinForm.Table = Forms("主窗口").Controls("Table\'" & Str & "\'") Dim nrs1 As List(Of DataRow) = tbl.Table.DataTable.Select("[桌号] Is Not Null And [红方_姓名] Is Not Null") If nrs1 IsNot Nothing Then For c1 As Integer = 0 To nrs1.Count - 1 Dim dr1 As DataRow = DataTables("比赛积分").SQLFind("[团体赛或个人赛] = \'" & lx & "\' And [棋赛名称] = \'" & di1 & "\' And [第几轮比赛] = \'" & di2 _ & "\' And [身份] = \'参赛人\' And [分组] = \'" & Str & "\' And [编号] = \'" & nrs1(c1)("红方_编号") & "\' And [姓名] = \'" & nrs1(c1)("红方_姓名") & "\' And ([比赛已结束] = False Or [比赛已结束] Is Null)") If dr1 Is Nothing Then dr1 = DataTables("比赛积分").AddNew dr1("日期") = di3 dr1("团体赛或个人赛") = lx dr1("棋赛名称") = di1 dr1("棋赛副名") = Forms("主窗口").Controls("TextBox4").Text dr1("第几轮比赛") = di2 dr1("身份") = "参赛人" dr1("分组") = Str dr1("编号") = nrs1(c1)("红方_编号") dr1("姓名") = nrs1(c1)("红方_姓名") dr1("红黑方") = "红方" dr1("桌号") = nrs1(c1)("桌号") dr1("上轮名次") = nrs1(c1)("红方_名次") If nrs1(c1)("桌号") = 0 Then dr1("积分") = 0 If di2 = 1 Then dr1("本轮止累计积分") = 0 dr1("本轮止曾交战对手累计积分") = 0 ElseIf di2 >= 2 Then dr1("本轮止累计积分") = nrs1(c1)("红方_上轮止累计积分") dr1("本轮止曾交战对手累计积分") = nrs1(c1)("红方_曾交战对手累计积分") End If ElseIf nrs1(c1)("桌号") > 0 Then dr1("积分") = nrs1(c1)("当前局成绩_红方") If di2 = 1 Then dr1("本轮止累计积分") = nrs1(c1)("当前局成绩_红方") dr1("本轮止曾交战对手累计积分") = nrs1(c1)("当前局成绩_黑方") ElseIf di2 >= 2 Then dr1("本轮止累计积分") = nrs1(c1)("红方_上轮止累计积分") + nrs1(c1)("当前局成绩_红方") dr1("本轮止曾交战对手累计积分") = nrs1(c1)("红方_曾交战对手累计积分") + nrs1(c1)("黑方_上轮止累计积分") End If End If dr1.Save ElseIf dr1 IsNot Nothing Then dr1("日期") = di3 dr1("团体赛或个人赛") = lx dr1("棋赛名称") = di1 dr1("棋赛副名") = Forms("主窗口").Controls("TextBox4").Text dr1("第几轮比赛") = di2 dr1("身份") = "参赛人" dr1("分组") = Str dr1("编号") = nrs1(c1)("红方_编号") dr1("姓名") = nrs1(c1)("红方_姓名") dr1("红黑方") = "红方" dr1("桌号") = nrs1(c1)("桌号") dr1("上轮名次") = nrs1(c1)("红方_名次") If nrs1(c1)("桌号") = 0 Then dr1("积分") = 0 If di2 = 1 Then dr1("本轮止累计积分") = 0 dr1("本轮止曾交战对手累计积分") = 0 ElseIf di2 >= 2 Then dr1("本轮止累计积分") = nrs1(c1)("红方_上轮止累计积分") dr1("本轮止曾交战对手累计积分") = nrs1(c1)("红方_曾交战对手累计积分") End If ElseIf nrs1(c1)("桌号") > 0 Then dr1("积分") = nrs1(c1)("当前局成绩_红方") If di2 = 1 Then dr1("本轮止累计积分") = nrs1(c1)("当前局成绩_红方") dr1("本轮止曾交战对手累计积分") = nrs1(c1)("当前局成绩_黑方") ElseIf di2 >= 2 Then dr1("本轮止累计积分") = nrs1(c1)("红方_上轮止累计积分") + nrs1(c1)("当前局成绩_红方") dr1("本轮止曾交战对手累计积分") = nrs1(c1)("红方_曾交战对手累计积分") + nrs1(c1)("黑方_上轮止累计积分") End If End If End If Next End If Dim nrs2 As List(Of DataRow) = tbl.Table.DataTable.Select("[桌号] Is Not Null And [黑方_姓名] Is Not Null") If nrs2 IsNot Nothing Then For c2 As Integer = 0 To nrs2.Count - 1 Dim dr2 As DataRow = DataTables("比赛积分").SQLFind("[团体赛或个人赛] = \'" & lx & "\' And [棋赛名称] = \'" & di1 & "\' And [第几轮比赛] = \'" & di2 _ & "\' And [身份] = \'参赛人\' And [分组] = \'" & Str & "\' And [编号] = \'" & nrs2(c2)("黑方_编号") & "\' And [姓名] = \'" & nrs2(c2)("黑方_姓名") & "\' And ([比赛已结束] = False Or [比赛已结束] Is Null)") If dr2 Is Nothing Then dr2 = DataTables("比赛积分").AddNew dr2("日期") = di3 dr2("团体赛或个人赛") = lx dr2("棋赛名称") = di1 dr2("棋赛副名") = Forms("主窗口").Controls("TextBox4").Text dr2("第几轮比赛") = di2 dr2("身份") = "参赛人" dr2("分组") = Str dr2("编号") = nrs2(c2)("黑方_编号") dr2("姓名") = nrs2(c2)("黑方_姓名") dr2("红黑方") = "黑方" dr2("桌号") = nrs2(c2)("桌号") dr2("积分") = nrs2(c2)("当前局成绩_黑方") dr2("上轮名次") = nrs2(c2)("黑方_名次") If nrs2(c2)("桌号") = 0 Then dr2("积分") = 0 If di2 = 1 Then dr2("本轮止累计积分") = 0 dr2("本轮止曾交战对手累计积分") = 0 ElseIf di2 >= 2 Then dr2("本轮止累计积分") = nrs2(c2)("黑方_上轮止累计积分") dr2("本轮止曾交战对手累计积分") = nrs2(c2)("黑方_曾交战对手累计积分") End If ElseIf nrs2(c2)("桌号") > 0 Then dr2("积分") = nrs2(c2)("当前局成绩_黑方") If di2 = 1 Then dr2("本轮止累计积分") = nrs2(c2)("当前局成绩_黑方") dr2("本轮止曾交战对手累计积分") = nrs2(c2)("当前局成绩_红方") ElseIf di2 >= 2 Then dr2("本轮止累计积分") = nrs2(c2)("黑方_上轮止累计积分") + nrs2(c2)("当前局成绩_黑方") dr2("本轮止曾交战对手累计积分") = nrs2(c2)("黑方_曾交战对手累计积分") + nrs2(c2)("红方_上轮止累计积分") End If End If dr2.Save ElseIf dr2 IsNot Nothing Then dr2("日期") = di3 dr2("团体赛或个人赛") = lx dr2("棋赛名称") = di1 dr2("棋赛副名") = Forms("主窗口").Controls("TextBox4").Text dr2("第几轮比赛") = di2 dr2("身份") = "参赛人" dr2("分组") = Str dr2("编号") = nrs2(c2)("黑方_编号") dr2("姓名") = nrs2(c2)("黑方_姓名") dr2("红黑方") = "黑方" dr2("桌号") = nrs2(c2)("桌号") dr2("积分") = nrs2(c2)("当前局成绩_黑方") dr2("上轮名次") = nrs2(c2)("黑方_名次") If nrs2(c2)("桌号") = 0 Then dr2("积分") = 0 If di2 = 1 Then dr2("本轮止累计积分") = 0 dr2("本轮止曾交战对手累计积分") = 0 ElseIf di2 >= 2 Then dr2("本轮止累计积分") = nrs2(c2)("黑方_上轮止累计积分") dr2("本轮止曾交战对手累计积分") = nrs2(c2)("黑方_曾交战对手累计积分") End If ElseIf nrs2(c2)("桌号") > 0 Then dr2("积分") = nrs2(c2)("当前局成绩_黑方") If di2 = 1 Then dr2("本轮止累计积分") = nrs2(c2)("当前局成绩_黑方") dr2("本轮止曾交战对手累计积分") = nrs2(c2)("当前局成绩_红方") ElseIf di2 >= 2 Then dr2("本轮止累计积分") = nrs2(c2)("黑方_上轮止累计积分") + nrs2(c2)("当前局成绩_黑方") dr2("本轮止曾交战对手累计积分") = nrs2(c2)("黑方_曾交战对手累计积分") + nrs2(c2)("红方_上轮止累计积分") End If End If End If Next End If End If End If [此贴子已经被作者于2022/10/19 14:48:05编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2022/10/19 13:38:00 -- 请上传实例测试 |
||||
-- 作者:采菊东篱下 -- 发布时间:2022/10/19 14:13:00 --
密码:888888 代码在配置栏-个人赛排座保存-保存个人赛积分按钮上,测试时先按下图选项选择![]() ![]() ,然后按自定义菜单上的个人赛排座保存-先按个人赛排座,注意比赛积分表上必须没有数据才会生成排座,如果有数据要先删除比赛积分表上所有数据,保存后再按个人赛排座,在生成的综合组表当前局成绩红、黑两列每行输入0-2之间的数,且和必须等于2的数如图: [此贴子已经被作者于2022/10/19 14:18:48编辑过]
|
||||
-- 作者:采菊东篱下 -- 发布时间:2022/10/19 14:21:00 -- 输入完上面的数据,按保存个人赛积分按钮,如果执行保存个人赛积分所有没注识代码就死机。 |
||||
-- 作者:有点蓝 -- 发布时间:2022/10/19 15:38:00 -- 1、个人赛排座保存-个人赛排座生成的综合组里黑方的编号有重复的编号,自己看看3楼的图。为什么有重复的自己调试排查 2、很多事件的代码不是很合理,有些根本是乱写的。比如在prepareedit事件给单元格赋值,在datacolchanged事件给表格排序,.... 3、比赛积分的datacolchanged事件不合理,容易导致死循环,特别是出现重复编号的情况下,我改了一下,自己理解
|