Foxtable(狐表)用户栏目专家坐堂 → 包含筛选问题


  共有3159人关注过本帖树形打印复制链接

主题:包含筛选问题

帅哥哟,离线,有人找我吗?
hbfnmxb
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:538 积分:5999 威望:0 精华:0 注册:2008/9/7 20:15:00
包含筛选问题  发帖心情 Post By:2021/1/29 20:16:00 [只看该作者]

我想输入“专业名称”中的部分文字,能筛选出包含这些文字的专业,当然“专业名称”是一个字符型的列,代码如下:

Ie.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
With e.Form.Controls("ComboBox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "物化生 = '" & .Value & "'"
    End If
End With
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

Dim txt As String = e.Form.Controls("TextBox1").Text
If txt = "" Then
   Else
    txt = "'%" & txt & "%'"
     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("专业录取线")
但这个代码中如果输入TextBox1内容,年度、选科等内容,就不再进行筛选了。我需要同时筛选出所要求的内容。老师看一下是哪里的错误。谢谢老师
[此贴子已经被作者于2021/1/29 22:02:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/30 9:02:00 [只看该作者]

Filter = "(专业名称 Like " & txt & " Or 院校名称 Like " & txt & " Or 所在城市 Like " & txt & " Or A211院校 Like " & txt & ")"

 回到顶部
帅哥哟,离线,有人找我吗?
hbfnmxb
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:538 积分:5999 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2021/1/30 10:26:00 [只看该作者]

谢谢老师。我需要同时筛选出:ComboBox1  ComboBox2  ComboBox3(这个是录取年度),并且任意输入专业名称中的部分字符或院校名称列中的部分字符或所在城市列中的部分字符,或A211院校列中的部分字符,我要得到的结果是:物理系列中    物化生  2019(2018或2017等),部分字符 小于高分GF,大于低分DF,同时出现。现在TextBox1这里只要有文字,其它的全部失效。2楼的结果,提示找不到!老师再给看一下。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/30 10:43:00 [只看该作者]

和其它条件一样的用法啊

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

 回到顶部
帅哥哟,离线,有人找我吗?
hbfnmxb
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:538 积分:5999 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2021/1/30 11:03:00 [只看该作者]

谢谢老师

 回到顶部
帅哥哟,离线,有人找我吗?
hbfnmxb
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:538 积分:5999 威望:0 精华:0 注册:2008/9/7 20:15:00
  发帖心情 Post By:2021/1/30 17:10:00 [只看该作者]

老师,用了四楼的代码, Filter = Filter & "专业名称 Like " & txt & " Or 院校名称 Like " & txt & " Or 所在城市 Like " & txt & " Or A211院校 Like " & txt 
我假设 专业名称 Like " & txt & "为第一选择内容, 院校名称 Like " & txt & "为第二选择内容,所在城市 Like " & txt & "为第三选择内容,A211院校 Like " & txt为第四选择内容
TextBox1输入第一选择内容时,ComboBox1  ComboBox2  ComboBox3(这个是录取年度), 小于高分GF,大于低分DF,同时出现。当输入除第一选择内容以外的内容(第二、第三、第四)录取年度不被筛选。如果把第一内容修改成院校名称,即:Filter = Filter & "院校名称 Like " & txt & " Or 专业名称 Like " & txt & " Or 所在城市 Like " & txt & " Or A211院校 Like " & txt 时,输入第一内容,会同时被选择,输入其它内容,录取年度不会被选择。老师您看一下,问题出在哪里。图片点击可在新窗口打开查看图片点击可在新窗口打开查看下图是窗口界面。

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


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107147 积分:544978 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/1/30 17:17:00 [只看该作者]

像2楼那样补上括号

 回到顶部
帅哥哟,离线,有人找我吗?
hbfnmxb
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:538 积分:5999 威望:0 精华:0 注册:2008/9/7 20:15:00
包含筛选问题  发帖心情 Post By:2021/1/30 17:30: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
With e.Form.Controls("ComboBox2")
    If .Value IsNot Nothing Then
        If Filter > "" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "物化生 = '" & .Value & "'"
    End If
End With
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

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/1/30 17:30:30编辑过]

 回到顶部