以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  筛选树利用Ctrl多选后,无法控制条件加载  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159417)

--  作者:透明人生
--  发布时间:2020/12/25 21:55:00
--  筛选树利用Ctrl多选后,无法控制条件加载
系统筛选树利用Ctrl多选后,无法控制条件加载(用户只加载“数学”)。点击显示所有,代码统计分数分布只显示一个科目(数学),正常;选择任何一个年级,正常;
利用Ctrl,把三四年级多选后,筛选内容正常,统计结果就不正常,会把语文、数学、英语三科全统计出来(因为设定用户只加载“数学”,不应该把语文和英语全统计出来)。
(如果选择三年级,再按住Ctrl选四年级,筛选内容正常,但统计出来三年级正常(只有数学),四年级语文和英语也跑出来了;如果选择四年级,再按住Ctrl选三年级,
筛选内容正常,但统计出来四年级正常(只有数学),三年级语文和英语也跑出来了。
看来问题是出在利用Ctrl选择上。)

图片点击可在新窗口打开查看此主题相关图片如下:系统筛选树.png
图片点击可在新窗口打开查看

b.FIlter = DataTables("自测成绩表").loadFIlter                 
If Tables("自测成绩表").FIlter > "" Then                             \'是否要加一个利用Ctrl多选条件 ?
    b.FIlter = IIF(b.FIlter > "", b.FIlter & " and ","") & Tables("自测成绩表").FIlter 
End If
b.Groups.AddDef("学校")
b.Groups.AddDef("年级")
b.Groups.AddDef("班级")  
b.Groups.AddDef("学科")
b.Groups.AddDef("单元")
b.Groups.AddDef("教师")
b.Groups.AddDef("年度")
b.Groups.AddDef("学期")
b.Groups.AddDef("排序")
b.Totals.AddExp("人数","分数","",AggregateEnum.Count) \'统计人数
Dim zf As object = TopToolBar.Items("学科总分").Value
If zf > 0 Then
b.Totals.AddExp("分数分布_"& (50 * zf/100) &"以下","Case When 分数 < " & (50 * zf/100) & " Then  1 Else 0  End")
b.Totals.AddExp("分数分布_" & (60 * zf/100) & "-"& (50 * zf/100) &"","Case When 分数 >= " & (50 * zf/100) & " And 分数 < " & (60 * zf/100) & " Then  1 else 0  End")
b.Totals.AddExp("分数分布_" & (70 * zf/100) & "-"& (60 * zf/100) &"","Case When 分数 >= " & (60 * zf/100) & " And 分数 < " & (70 * zf/100) & " Then  1 else 0  End")

[此贴子已经被作者于2020/12/25 22:56:08编辑过]

--  作者:有点蓝
--  发布时间:2020/12/26 9:42:00
--  
msgbox(DataTables("自测成绩表").loadFIlter)
b.FIlter = DataTables("自测成绩表").loadFIlter
If Tables("自测成绩表").FIlter > "" Then                             \'是否要加一个利用Ctrl多选条件 ?
    b.FIlter = IIF(b.FIlter > "", b.FIlter & " and ","") & Tables("自测成绩表").FIlter 
End If
msgbox(b.FIlter)

调试看看各个条件

--  作者:透明人生
--  发布时间:2020/12/26 14:49:00
--  
第一条提示: 教师=“用户”
第二条提示:教师=“用户” and [年级] = “三年级” or ([年级] = “四年级”)
问题好像是出在“or”上,用Ctrlt选择,没有把用户都带进去?
[此贴子已经被作者于2020/12/26 14:50:41编辑过]

--  作者:有点蓝
--  发布时间:2020/12/26 15:01:00
--  
b.FIlter = IIF(b.FIlter > "", b.FIlter & " and ","") & Tables("自测成绩表").FIlter 
改为
if b.FIlter > "" then
b.FIlter  = b.FIlter & " and (" & Tables("自测成绩表").FIlter  & ")"
else
b.FIlter = Tables("自测成绩表").FIlter 
end if

--  作者:透明人生
--  发布时间:2020/12/26 15:12:00
--  
谢谢!老师真厉害!