以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 怎么无法给分组赋值? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151265) |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/19 8:16:00 -- 怎么无法给分组赋值? 我在对阵表窗口男子组按钮里写了代码,可无法给比赛积分表分组列赋值,不知问题在呢?
密码:888888
|
||||
-- 作者:有点蓝 -- 发布时间:2020/6/19 9:09:00 -- 没看到哪里有给分组列赋值的代码 |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/19 9:34:00 -- 不是这样赋值吗?那应怎么写? 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 bsrq As WinForm.DateTimePicker = e.Form.Controls("rq") Dim di3 As Date = bsrq.Value Dim Str As String = "男子组" Dim dr As DataRow = DataTables("比赛积分").SQLfind("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\'And [性别] = \'男\' And [分组] = \'" & Str & "\'") Dim a As String = Cstr(Val(di2)-1) Dim i2 As Integer = 1 Dim ii2 As Integer = 1 Dim dts As List(of DataRow) = DataTables("基本信息").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [身份] = \'参赛人\' And [性别] = \'男\'") DataTables("比赛积分").DeleteFor("[棋赛名称] is null and [第几轮比赛] is null And [分组] = \'男子组\'") Dim cnt As Integer cnt = DataTables("比赛积分").Compute("Count([姓名])", "[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\'And [性别] = \'男\' And [分组] = \'" & Str & "\'") If di2 =1 And cnt = 0 Then Do While dts.Count > 0 Dim idx As Integer = rand.Next(0,dts.Count-1) dr = DataTables("比赛积分").AddNew dr("桌号") = math.Ceiling((i2) / 2) dr("日期") = di3 dr("棋赛名称") = di1 dr("第几轮比赛") = di2 dr("分组") = Str dr("编号") = dts(idx)("编号") dr("姓名") = dts(idx)("姓名") dr("轮赛次数值转换") = Val(di2) dts.RemoveAt(idx) i2 + = 1 Loop DataTables("比赛积分").Load DataTables("比赛积分").Save() DataTables("男子组").DataRows.Clear Dim drs1 As List(of DataRow) = DataTables("比赛积分").SQLSelect("[棋赛名称] = \'" & di1 & "\'And [第几轮比赛] = \'" & di2 & "\'And [性别] = \'男\' And [分组] = \'" & Str & "\'","","桌号 Desc") For i As Integer = 0 To drs1.Count - 1 Step 2 If i + 1 <= drs1.Count - 1 Dim nr As DataRow = DataTables("男子组").AddNew nr("桌号") = drs1(i)("桌号") nr("红方_编号") = drs1(i)("编号") nr("红方_姓名") = drs1(i)("姓名") nr("黑方_编号") = drs1(i+1)("编号") nr("黑方_姓名") = drs1(i+1)("姓名") End If Next
|
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/19 9:35:00 -- 哦,写成这样: dr("分组") = "Str"
|
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/19 9:36:00 -- 不对啊,那不是直接就是str |
||||
-- 作者:有点蓝 -- 发布时间:2020/6/19 9:41:00 -- 1楼的项目没看到有这个代码。就是3楼的用法 |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/19 9:45:00 -- 代码在对阵表窗口男子组按钮里,问题是执行后对阵表分组列并无生成数据。 [此贴子已经被作者于2020/6/19 9:49:48编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2020/6/19 9:52:00 -- 重新上传项目,1楼的项目男子组按钮和3楼的代码很多不一样 |
||||
-- 作者:采菊东篱下 -- 发布时间:2020/6/19 9:55:00 --
|
||||
-- 作者:有点蓝 -- 发布时间:2020/6/19 10:16:00 -- datacolchanged事件的影响,调换一下赋值的位置,放到棋赛名称、编号,姓名赋值之后,不然这几列会触发datacolchanged事件,从基本信息表取分组覆盖回来。或者取消datacolchanged事件给分组赋值的代码 Do While dts.Count > 0 Dim idx As Integer = rand.Next(0,dts.Count-1) dr = DataTables("比赛积分").AddNew dr("桌号") = math.Ceiling((i2) / 2) dr("日期") = di3 dr("棋赛名称") = di1 dr("第几轮比赛") = di2 dr("编号") = dts(idx)("编号") dr("姓名") = dts(idx)("姓名") dr("轮赛次数值转换") = Val(di2) dr("分组") = Str dts.RemoveAt(idx) i2 + = 1 Loop |