以文本方式查看主题

-  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
--  

图片点击可在新窗口打开查看此主题相关图片如下:77.png
图片点击可在新窗口打开查看

--  作者:有点蓝
--  发布时间: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
--  
老师,又出现了这样一个错误提示:您看一下

图片点击可在新窗口打开查看此主题相关图片如下:012.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2021/5/7 9:46:00
--  
Dim s As String=e.Form.Controls("ComboBox2").text
--  作者:hbfnmxb
--  发布时间:2021/5/7 16:55:00
--  
感谢老师,按照老师的进行了修改,已经不再报错了.现在我在实际测试的过程中发现代码执行还有问题:如下图:

图片点击可在新窗口打开查看此主题相关图片如下:77.png
图片点击可在新窗口打开查看
当我选择“物理,地理,思想政治”进行筛选时,选出的结果是图中的样子,完全不上;

图片点击可在新窗口打开查看此主题相关图片如下:78.png
图片点击可在新窗口打开查看
当我选择“历史,地理,思想政治”进行筛选时,选出的结果基本能对上,但也有不应该出现的选项,麻烦老师给看一下,代码到低出在哪里。谢谢老师!!


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:专业选科筛选公式.zip


--  作者:有点蓝
--  发布时间: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))

带“和”的一般都不被筛选!!不知道是什么原因?