以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 查询按钮生成的数据不完整 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=151626) |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/29 16:28:00 -- 查询按钮生成的数据不完整
密码:888888 如题: Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称") Dim di1 As String = qsmc.Value Dim m As WinForm.TextBox = e.Form.Controls("第几轮") Dim di2 As String = m.Value Dim fz As WinForm.ComboBox = e.Form.Controls("fenzhu") Dim Str As String = fz.Value Dim drs6 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\'") For i As Integer = 0 To drs6.Count - 1 Step 2 If i + 1 <= drs6.Count - 1 Dim cx As DataRow = DataTables("查询").AddNew cx("红方_编号") = drs6(i)("编号") cx("红方_姓名") = drs6(i)("姓名") cx("红方_上轮止累计积分") = drs6(i)("上轮止累计积分") cx("红方_曾交战对手累计积分") = drs6(i)("曾交战对手累计积分") cx("当前局成绩_红方") = IIF(drs6(i).IsNull("积分")," Is Null"," =\'" & drs6(i)("积分") & "\'") cx("黑方_编号") = drs6(i+1)("编号") cx("黑方_姓名") = drs6(i+1)("姓名") cx("黑方_上轮止累计积分") = drs6(i+1)("上轮止累计积分") cx("黑方_曾交战对手累计积分") = drs6(i+1)("曾交战对手累计积分") cx("当前局成绩_黑方") = IIF(drs6(i+1).IsNull("积分")," Is Null"," =\'" & drs6(i+1)("积分") & "\'") End If Next |
||||
-- 作者:有点蓝 -- 发布时间:2020/6/29 16:48:00 -- For i As Integer = 0 To drs6.Count - 1 Step 2 Dim cx As DataRow = DataTables("查询").AddNew cx("红方_编号") = drs6(i)("编号") cx("红方_姓名") = drs6(i)("姓名") cx("红方_上轮止累计积分") = drs6(i)("上轮止累计积分") cx("红方_曾交战对手累计积分") = drs6(i)("曾交战对手累计积分") cx("当前局成绩_红方") = IIF(drs6(i).IsNull("积分")," Is Null"," =\'" & drs6(i)("积分") & "\'") If i + 1 <= drs6.Count - 1 cx("黑方_编号") = drs6(i+1)("编号") cx("黑方_姓名") = drs6(i+1)("姓名") cx("黑方_上轮止累计积分") = drs6(i+1)("上轮止累计积分") cx("黑方_曾交战对手累计积分") = drs6(i+1)("曾交战对手累计积分") cx("当前局成绩_黑方") = IIF(drs6(i+1).IsNull("积分")," Is Null"," =\'" & drs6(i+1)("积分") & "\'") End If Next
|
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/29 20:49:00 --
密码:888888 改成这样,报错! Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称") Dim di1 As String = qsmc.Value Dim m As WinForm.TextBox = e.Form.Controls("第几轮") Dim di2 As String = m.Value Dim fz As WinForm.ComboBox = e.Form.Controls("fenzhu") Dim Str As String = fz.Value DataTables("查询").DataRows.Clear Dim drs6 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\' And [桌号] > 0","","桌号") For ci As Integer = 0 To drs6.Count - 1 Step 2 Dim cx As DataRow = DataTables("查询").AddNew cx("桌号") = drs6(ci)("桌号") cx("红方_编号") = drs6(ci)("编号") cx("红方_姓名") = drs6(ci)("姓名") cx("红方_上轮止累计积分") = drs6(ci)("上轮止累计积分") cx("红方_曾交战对手累计积分") = drs6(ci)("曾交战对手累计积分") cx("当前局成绩_红方") = IIF(drs6(ci).IsNull("积分"),"0",drs6(ci)("积分")) If ci + 1 <= drs6.Count - 1 cx("黑方_编号") = drs6(ci+1)("编号") cx("黑方_姓名") = drs6(ci+1)("姓名") cx("黑方_上轮止累计积分") = drs6(ci+1)("上轮止累计积分") cx("黑方_曾交战对手累计积分") = drs6(ci+1)("曾交战对手累计积分") cx("当前局成绩_黑方") = IIF(drs6(ci+1).IsNull("积分"),"0",drs6(ci+1)("积分")) End If Next Dim drs7 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\' And [桌号] = 0","","桌号") For hi As Integer = 0 To drs7.Count - 1 Step 2 Dim cx As DataRow = DataTables("查询").AddNew cx("桌号") = 0 cx("红方_编号") = drs7(hi)("编号") cx("红方_姓名") = drs7(hi)("姓名") cx("红方_上轮止累计积分") = drs7(hi)("上轮止累计积分") cx("红方_曾交战对手累计积分") = drs7(hi)("曾交战对手累计积分") cx("当前局成绩_红方") = IIF(drs7(hi).IsNull("积分"),"0",drs7(hi)("积分")) If hi + 1 <= drs6.Count - 1 cx("黑方_编号") = drs7(hi+1)("编号") cx("黑方_姓名") = drs7(hi+1)("姓名") cx("黑方_上轮止累计积分") = drs7(hi+1)("上轮止累计积分") cx("黑方_曾交战对手累计积分") = drs7(hi+1)("曾交战对手累计积分") cx("当前局成绩_黑方") = IIF(drs7(hi+1).IsNull("积分"),"0",drs7(hi+1)("积分")) End If Next |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/29 20:53:00 -- 你给的代码没有了所有0桌的数据,查询出来的数据也与比赛积分表的不一致,因此我把代码改为这样,显示数据没错了,但提示窗口报错就不知哪的问题了。 |
||||
-- 作者:有点蓝 -- 发布时间:2020/6/29 20:58:00 -- 调试技巧:http://www.foxtable.com/webhelp/topics/1485.htm |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/29 21:14:00 -- 我知道是什么问题引发的错了,综合组第一轮不报错,因为没缺赛人,都有对应排座,第2轮之后有缺赛独立排座后没对应数据就报错了,请教如何解决对应数据为空造成的错误问题呢? |
||||
-- 作者:有点蓝 -- 发布时间:2020/6/29 21:56:00 -- 判断查询结果是否有值,比如使用find,就是判断if dr isnot nothing,如果使用select,就判断drs.Count > 0 |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/29 22:24:00 -- 还是报错 Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称") Dim di1 As String = qsmc.Value Dim fz As WinForm.ComboBox = e.Form.Controls("fenzhu") Dim di4 As String = fz.Value DataTables("比赛积分").SQLReplaceFor("比赛已结束",True,"[棋赛名称] = \'" & di1 & "\' And [分组] = \'" & di4 & "\' And [比赛已结束] = False") DataTables("比赛积分").SQLReplaceFor("_locked",True,"[棋赛名称] = \'" & di1 & "\' And [分组] = \'" & di4 & "\' And [比赛已结束] = True") DataTables("比赛积分").save DataTables("比赛积分").load Case "解锁" Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称") Dim di1 As String = qsmc.Value Dim fz As WinForm.ComboBox = e.Form.Controls("fenzhu") Dim di4 As String = fz.Value DataTables("比赛积分").SQLReplaceFor("比赛已结束",False,"[棋赛名称] = \'" & di1 & "\' And [分组] = \'" & di4 & "\' And [比赛已结束] = True") DataTables("比赛积分").SQLReplaceFor("_locked",False,"[棋赛名称] = \'" & di1 & "\' And [分组] = \'" & di4 & "\' And [比赛已结束] = False") DataTables("比赛积分").save DataTables("比赛积分").load Case "查询" Dim qsmc As WinForm.ComboBox = e.Form.Controls("棋赛名称") Dim di1 As String = qsmc.Value Dim m As WinForm.TextBox = e.Form.Controls("第几轮") Dim di2 As String = m.Value Dim fz As WinForm.ComboBox = e.Form.Controls("fenzhu") Dim Str As String = fz.Value DataTables("查询").DataRows.Clear Dim drs6 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\' And [桌号] > 0","","桌号") Dim drs7 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\' And [桌号] > 0 And [红黑方] = \'红方\'","","桌号") Dim drs8 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\' And [桌号] > 0 And [红黑方] = \'黑方\'","","桌号") For ci As Integer = 0 To (drs6.Count)\\2 Dim cx As DataRow = DataTables("查询").AddNew If ci > drs7.count And ci <= drs8.count Then cx("红方_编号") = Nothing cx("红方_姓名") = Nothing cx("红方_上轮止累计积分") = 0 cx("红方_曾交战对手累计积分") = 0 cx("当前局成绩_红方") = 0 Else cx("桌号") = drs7(ci)("桌号") cx("红方_编号") = drs7(ci)("编号") cx("红方_姓名") = drs7(ci)("姓名") cx("红方_上轮止累计积分") = drs7(ci)("上轮止累计积分") cx("红方_曾交战对手累计积分") = drs7(ci)("曾交战对手累计积分") cx("当前局成绩_红方") = IIF(drs7(ci).IsNull("积分"),"0",drs7(ci)("积分")) End If If ci <= drs7.count And ci > drs8.count Then cx("黑方_编号") = Nothing cx("黑方_姓名") = Nothing cx("黑方_上轮止累计积分") = 0 cx("黑方_曾交战对手累计积分") = 0 cx("当前局成绩_黑方") = 0 Else cx("黑方_编号") = drs8(ci)("编号") cx("黑方_姓名") = drs8(ci)("姓名") cx("黑方_上轮止累计积分") = drs8(ci)("上轮止累计积分") cx("黑方_曾交战对手累计积分") = drs8(ci)("曾交战对手累计积分") cx("当前局成绩_黑方") = IIF(drs8(ci+1).IsNull("积分"),"0",drs8(ci)("积分")) End If Next Dim drs9 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\' And [桌号] = 0","","桌号") Dim drs10 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\' And [桌号] = 0 And [红黑方] = \'红方\'","","桌号") Dim drs11 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\' And [分组] = \'" & Str & "\' And [桌号] = 0 And [红黑方] = \'黑方\'","","桌号") For hi As Integer = 0 To (drs9.Count)\\2 Dim cx As DataRow = DataTables("查询").AddNew If hi > drs10.count And hi <= drs11.count Then cx("红方_编号") = Nothing cx("红方_姓名") = Nothing cx("红方_上轮止累计积分") = 0 cx("红方_曾交战对手累计积分") = 0 cx("当前局成绩_红方") = 0 Else cx("桌号") = 0 cx("红方_编号") = drs10(hi)("编号") cx("红方_姓名") = drs10(hi)("姓名") cx("红方_上轮止累计积分") = drs10(hi)("上轮止累计积分") cx("红方_曾交战对手累计积分") = drs10(hi)("曾交战对手累计积分") cx("当前局成绩_红方") = IIF(drs10(hi).IsNull("积分"),"0",drs10(hi)("积分")) End If If hi <= drs10.count And hi > drs11.count Then cx("黑方_编号") = Nothing cx("黑方_姓名") = Nothing cx("黑方_上轮止累计积分") = 0 cx("黑方_曾交战对手累计积分") = 0 cx("当前局成绩_黑方") = 0 Else cx("黑方_编号") = drs11(hi+1)("编号") cx("黑方_姓名") = drs11(hi+1)("姓名") cx("黑方_上轮止累计积分") = drs11(hi+1)("上轮止累计积分") cx("黑方_曾交战对手累计积分") = drs11(hi+1)("曾交战对手累计积分") cx("当前局成绩_黑方") = IIF(drs11(hi+1).IsNull("积分"),"0",drs11(hi+1)("积分")) End If Next
[此贴子已经被作者于2020/6/29 23:01:20编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/6/29 22:42:00 -- 没看懂这代码逻辑。自己调试一下看哪一句出错 |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/29 23:04:00 -- ![]() ![]() 0桌的数据全没了,最后一行也没了黑方的当前积分!
|