以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]有关CheckedComboBox复选框问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=173700)

--  作者:lsjzgyt
--  发布时间:2021/12/12 18:42:00
--  [求助]有关CheckedComboBox复选框问题
老师你好,我想做一个CheckedComboBox条件筛选。

图片点击可在新窗口打开查看此主题相关图片如下:123.jpg
图片点击可在新窗口打开查看
比如我在CheckedComboBox里选中语文和英语,那么列名"三大科优势"里符合条件的是全部,语文,英语,语文或数学,数学或英语,关键是语文和数学不要筛选出来(这两科都是优秀才行),只有在CheckedComboBox里选中语文和数学,那么除了全部,语文,数学,语文或数学,数学或英语,这个时候语文和数学才符合条件一起筛选出学生名单来。按钮的代码按照示例
Dim Filter As String = "1=1"
With e.Form.Controls("CheckedComboBox1")
    If .Value <> Nothing Then
        Filter &= " and 三大科优势 in (\'" & .Value.replace(",", "\',\'") & "\')"
    End If
End With

Tables("三大科学生名单表").Filter = Filter
不知道怎么改了,请老师帮忙,谢谢!

--  作者:有点蓝
--  发布时间:2021/12/12 20:58:00
--  
没有办法做这种筛选。不如换种方式,先界定一下,语文或数学、语文和数学这2个定义是怎么来的?然后根据定义来判断
--  作者:lsjzgyt
--  发布时间:2021/12/12 21:01:00
--  
好的,谢谢!
--  作者:lsjzgyt
--  发布时间:2021/12/12 21:10:00
--  
先界定一下,语文或数学、语文和数学这2个定义是怎么来的?然后根据定义来判断?


--  作者:lsjzgyt
--  发布时间:2021/12/12 21:48:00
--  
CheckedComboBox里选中语文和英语,三大科里语文和英语只要有一科是优势,就符合条件,所以“全部”,”语文“,“英语”,“语文或数学,数学或英语”,这些都符合,而语文和数学必须是两科都优势才可以。也就是如果是选中语文和数学,那以上就都符合了。真的没有办法筛选了吗?
--  作者:有点蓝
--  发布时间:2021/12/12 22:34:00
--  
人脑可以理解,但是程序无法理解这种文字游戏。程序只能判断确定性的东西。

怎么样算是优势?假设100分以上算是优势,那么可以这样判断:

dim ss as string = "语文,英语" \'可以改为CheckedComboBox的值
dim filter as string = "1=2"
for each s as string in ss.split(",")
filter = filter & "or " & s & " > 100"
next
Tables("三大科学生名单表").Filter = Filter

--  作者:lsjzgyt
--  发布时间:2021/12/13 8:23:00
--  
谢谢老师!
程序不需要理解这种文字游戏啊。只要CheckedComboBox选中语文和英语,就把符合三大科优势这列中文本字符串“全部”,”语文“,“英语”,“语文或数学,数学或英语”的学生找出来就可以,这是固定的啊,不需要程序按分数去判断优势!

--  作者:lsjzgyt
--  发布时间:2021/12/13 8:51:00
--  
老师你好!
这个不能定义吗。如果CheckedComboBox选中语文和英语,就把符合三大科优势这列中文本字符串“全部”,”语文“,“英语”,“语文或数学,数学或英语”的学生找出来。如果CheckedComboBox选中语文和数学。那么就把三大科优势这列中文本字符串“全部”,”语文“,“数学”,“语文或数学,数学或英语”“语文和数学的学生找出来!文本字符串是固定的,不是根据分数算出来的。谢谢老师!

--  作者:有点蓝
--  发布时间:2021/12/13 9:14:00
--  
Dim ss As String = "语文,英语" \'可以改为CheckedComboBox的值
Dim filter As String
Dim sr() As String = ss.split(",")
Dim aa() As String = {"语文","数学","英语"}
Dim s1 As String
If sr.Length = 2 Then
s1 = ",\'" & sr(0) & "和" & sr(1) & "\',\'" & sr(1) & "和" & sr(0) & "\'"
End If
For Each s3 As String In sr
    For Each s2 As String In aa
        If s2 <> s3 Then
            s1 = s1 & ",\'" & s3 & "或" & s2 & "\',\'" & s2 & "或" & s3 & "\'"
        End If
    Next
Next
filter = "三大科优势 in (\'全部\',\'" & sr(0) & "\',\'" & sr(1) & "\'" & s1 & ")"

msgbox(filter)

--  作者:lsjzgyt
--  发布时间:2021/12/13 10:28:00
--  
谢谢有点蓝老师
我的表述可能不清楚。是这样的。

图片点击可在新窗口打开查看此主题相关图片如下:2.jpg
图片点击可在新窗口打开查看
如果我选中语文和英语(就选两个科目吧),点查询就筛选出优势科目列中”全部,语文,英语,语文或英语“所有学生名单,如果选中语文和理综,就筛选出全部,语文,理综,语文和理综。优势科目中文本内容是固定的几个字符,这个不能定义吗?

图片点击可在新窗口打开查看此主题相关图片如下:1.jpg
图片点击可在新窗口打开查看
麻烦老师啦