以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 解释代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=175166) |
-- 作者:lisangyu -- 发布时间:2022/2/22 17:00:00 -- 解释代码 蓝总:以下是论坛<驾驶员理论考试模拟系统》的关于如何组组题的代码,就这个实现看的云里雾里,能不能将黄色部分关键代码解释下 Tables("试题库").Redraw = False Tables("试题库").Filter = "" Tables("试题库").Sort = "" For i As integer = 0 to Tables("试题库").rows.count -1 Tables("试题库").Rows(i)("随机值") = Rand.Next(10000) Next \'排随机值 For Each dr As DataRow in DataTables("试题库").DataRows dr("信息") = Nothing dr("序号") = Nothing Next \'清空指定列的数据 Dim fls As List(Of String) = DataTables("试题库").GetUniqueValues("","分类") For Each fl As String In fls \'获得该分类的全部行 Dim drs As List(Of DataRow) = DataTables("试题库").Select("[分类] = \'" & fl & "\'", "随机值") For n As integer = 0 To drs.Count - 1 \'遍历所有行 drs(n)("组题") = n + 1 \'编号排序 Next Next Dim Str As String For Each fl As String In fls Dim dr As DataRow = DataTables("组题方式").Find("[试题] = \'" & fl & "\'") \'组合字符串 str = str & " or [分类] = \'" & fl & "\' And [组题] <= " & dr(Vars("车型"))*100 Next \'筛选 Tables("试题库").Filter = str.SubString(4) Tables("试题库").Sort = "随机值,题型" For i As integer = 0 to Tables("试题库").rows.count -1 Tables("试题库").Rows(i)("序号") = i + 1 Next \'对序号我按筛选行的顺序赋值 Tables("试题库").Redraw = True |
-- 作者:有点蓝 -- 发布时间:2022/2/22 17:11:00 -- 这个最好是问做这个系统的人了,我也看的云里雾里 |
-- 作者:lisangyu -- 发布时间:2022/2/23 9:57:00 -- Dim Str As String For Each fl As String In fls Dim dr As DataRow = DataTables("组题方式").Find("[试题] = \'" & fl & "\'") \'组合字符串 str = str & " or [分类] = \'" & fl & "\' And [组题] <= " & dr(Vars("车型"))*100 Next \'筛选 Tables("试题库").Filter = str.SubString(4) Tables("试题库").Sort = "随机值,题型" 蓝总:Tables("试题库").Filter = str.SubString(4) 从第四个字符开始 返回所有字符串,对试题库进行赛选,这个4从得来的? |
-- 作者:有点蓝 -- 发布时间:2022/2/23 10:01:00 -- 拼接字符串后,去掉最前面的or For Each fl As String In fls Dim dr As DataRow = DataTables("组题方式").Find("[试题] = \'" & fl & "\'") \'组合字符串 str = str & " or [分类] = \'" & fl & "\' And [组题] <= " & dr(Vars("车型"))*100 Next \'筛选 可以这样测试一下,看效果 Dim Str As String for i as integer = 0 to 2 str = str & " or 第一列=" & i next msgbox("没有去掉前的结果是:" & str) msgbox("去掉后的结果是:" & str.SubString(4)) |