以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 老师,看一个这段代码错在哪里,如何修改下? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=164854) |
||||
-- 作者:hbfnmxb -- 发布时间:2021/5/7 9:06:00 -- 老师,看一个这段代码错在哪里,如何修改下? 在执行窗口单独测试时,没问题,几段代码合并后,就出问题了。老师,您看哪里的错误。红色部分提示的错误! e.Form.Controls("Label6").Text = "正在进行专业筛选,请稍后..." Application.DoEvents() Dim timestart,timeend As Date timestart=Date.now Dim Filter As String With e.Form.Controls("ComboBox1") If .Value IsNot Nothing Then Filter = "首选科目 = \'" & .Value & "\'" End If End With Dim s As String=e.Form.Controls("ComboBox2") \'考生选科数组 s=s.replace("物理","").replace("历史","").replace(",,",",").trim(",") \'只剩下再选科目 Output.Show(s) Dim Xks() As String \'考生选科集合 Xks = s.split(",") Dim Jhxks As List(Of String) \'招生计划中的选科 Jhxks = DataTables("专业录取线").GetValues("再选科目") Dim Xkmys As New List(Of String) \'与我的选科匹配的选科集合 Xkmys.Add("不限") Xkmys.Add(Xks(0) & "和" & Xks(1)) \'\'单科加"或" For Index As Integer = 0 To Xks.Length - 1 ’提示错误的位置在这里! For Each Product As String In Jhxks If (Product.contains(Xks(Index) & "或") Or Product.contains("或" & Xks(Index)) Or Product=Xks(Index)) And Xkmys.Contains(Product)=False Then \'filter=filter & "\'" & Product & "\'" \'Jhxks.Remove(Product) Xkmys.Add(Product) End If Next Next \'加组合,手动填加, \'开始生成筛选条件 Dim tj As String For Each filter As String In Xkmys tj = tj & "\'" & filter & "\'," Next tj="[再选科目] In (" & tj.trim(",") & ")" Tables("专业录取线").Filter=tj output.Show(tj) With e.Form.Controls("ComboBox3") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "录取年度 = \'" & .Value & "\'" End If End With With e.Form.Controls("ComboBox4") If .Value IsNot Nothing Then If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "文理分科 = \'" & .Value & "\'" End If End With Dim txt As String = e.Form.Controls("TextBox1").Text If txt > "" Then If Filter >"" Then Filter = Filter & " And " End If txt = "\'%" & txt & "%\'" Filter = Filter & "(专业名称 Like " & txt & " Or 院校名称 Like " & txt & " Or 所在省份 Like " & txt & " Or A211院校 Like " & txt & ")" End If If e.Form.Controls("GF").text > "" If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "低分同位 <= " & e.Form.Controls("GF").text End If If e.Form.Controls("DF").text > "" If Filter >"" Then Filter = Filter & " And " End If Filter = Filter & "低分同位 >= " & e.Form.Controls("dF").text End If If Filter > "" Then Tables("专业录取线").Filter = Filter End If Tables("专业录取线").Sort = "低分同位 DESC" \'按"低分同位"列降序排列 e.Form.Controls("Label6").Text = "专业筛选完毕!." timeend=Date.now e.Form.Controls("Label6").text="耗时" & (timeend-timestart).TotalSeconds & "秒" Messagebox.Show("专业筛选完毕,请继续!") MainTable = Tables("专业录取线") |
||||
-- 作者:有点蓝 -- 发布时间:2021/5/7 9:19:00 -- 提示什么错误? |
||||
-- 作者:hbfnmxb -- 发布时间:2021/5/7 9:22:00 -- ![]() ![]() |
||||
-- 作者:有点蓝 -- 发布时间:2021/5/7 9:32:00 -- 提示的意思是filter 这个变量名称重复了,前面已经定义了一个同名的变量,换个名称 \'加组合,手动填加, \'开始生成筛选条件 Dim tj As String For Each filter2 As String In Xkmys tj = tj & "\'" & filter2 & "\'," Next |
||||
-- 作者:hbfnmxb -- 发布时间:2021/5/7 9:45:00 -- 老师,又出现了这样一个错误提示:您看一下 |
||||
-- 作者:有点蓝 -- 发布时间:2021/5/7 9:46:00 -- Dim s As String=e.Form.Controls("ComboBox2").text |
||||
-- 作者:hbfnmxb -- 发布时间:2021/5/7 16:55:00 -- 感谢老师,按照老师的进行了修改,已经不再报错了.现在我在实际测试的过程中发现代码执行还有问题:如下图: 当我选择“物理,地理,思想政治”进行筛选时,选出的结果是图中的样子,完全不上;
|
||||
-- 作者:有点蓝 -- 发布时间:2021/5/7 17:05:00 -- If Filter > "" Then Tables("专业录取线").Filter = Filter End If 改为 If Filter > "" Then if tj > "" then Filter = Filter & " and " & tj end if Tables("专业录取线").Filter = Filter End If |
||||
-- 作者:hbfnmxb -- 发布时间:2021/5/7 19:07:00 -- 老师,修改了。当“选科系列”为历史时,考生选科中,历史中六个选科可以按要求,得出筛选结果。但当“选科系列”为物理时,物理中六个选科,不管选哪个组合,最后筛选出的结果,依然是“物理,化学,生物”的组合结果,这是啥原因?如果说代码有错误,为啥选历史时,得出的结果,就是正确的;如果说代码没有错误,为啥选物理时,得出的结果又不对。如考生选科为“物理,生物,思想政治”时,得出的筛选结果还是“物理,化学,生物”的组合结果。老师您看问题出在哪里了? |
||||
-- 作者:hbfnmxb -- 发布时间:2021/5/8 8:38:00 -- Xkmys.Add("不限") Xkmys.Add(Xks(0) & "和" & Xks(1)) 带“和”的一般都不被筛选!!不知道是什么原因?
|