Foxtable(狐表)用户栏目专家坐堂 → 【求助】窗口设计中的多列筛选问题


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

主题:【求助】窗口设计中的多列筛选问题

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


加好友 发短信
等级:童狐 帖子:259 积分:2110 威望:0 精华:0 注册:2018/4/30 16:00:00
【求助】窗口设计中的多列筛选问题  发帖心情 Post By:2018/10/26 10:58:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:剪辑_3.jpg
图片点击可在新窗口打开查看

我在设计一个窗口时,想通过开始时间和结束时间的控件来选择的某个时间段,并筛选出数据表中的(4个季度)的4列走访记录在该时间段的数据。在1列走访记录(如走访记录1列)的情况下筛选数据有效,多列数据同时筛选就无效l,望指点修改。我写的代码如下:
With e.Form.Controls("走访开始")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "走访记录1 >= #" & .Value & "#  or 走访记录2 >= #" & .Value & "#  or 走访记录3 >= #" & .Value & "#  or 走访记录2 >= #" & .Value & "# "
    End If
End With
With e.Form.Controls("走访结束")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "走访记录1 <= #" & .Value & "#  or 走访记录2 <= #" & .Value & "#  or 走访记录3 <= #" & .Value & "# or 走访记录4 <= #" & .Value & "#"
    End If
End With


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106050 积分:539343 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/26 11:01:00 [只看该作者]

With e.Form.Controls("走访开始")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "(走访记录1 >= #" & .Value & "#  or 走访记录2 >= #" & .Value & "#  or 走访记录3 >= #" & .Value & "#  or 走访记录2 >= #" & .Value & "# )"
    End If
End With
With e.Form.Controls("走访结束")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "(走访记录1 <= #" & .Value & "#  or 走访记录2 <= #" & .Value & "#  or 走访记录3 <= #" & .Value & "# or 走访记录4 <= #" & .Value & "#)"
    End If
End With

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


加好友 发短信
等级:童狐 帖子:259 积分:2110 威望:0 精华:0 注册:2018/4/30 16:00:00
  发帖心情 Post By:2018/10/26 11:47:00 [只看该作者]

谢谢,有点效果,但是还是有瑕疵,就是走访结束控件的选择时间,不知什么原因不能控制筛选结果。就是,即使选定了走访结束时间点,筛选出的结果中会有走访记录的日期大于走访结束控件选择的日期,不知什么原因。

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106050 积分:539343 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/26 12:01:00 [只看该作者]

Dim filter2 As String
For i As Integer = 1 To 4
    Dim f2 As String = ""
    With e.Form.Controls("走访开始")
        If .Value IsNot Nothing Then
            f2 = f2 & "走访记录" & i & " >= #" & .Value & "# "
        End If
    End With
    With e.Form.Controls("走访结束")
        If .Value IsNot Nothing Then
            If f2 >"" Then
                f2 = f2 & " And "
            End If
            f2 = f2 & "走访记录" & i & " <= #" & .Value & "# "
        End If
    End With
    If filter2 >"" Then
        filter2 = filter2 & " or "
    End If
    filter2 = filter2 & f2
Next
If filter2 > "" Then
    msgbox(filter2 )
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & filter2
End If

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


加好友 发短信
等级:童狐 帖子:259 积分:2110 威望:0 精华:0 注册:2018/4/30 16:00:00
  发帖心情 Post By:2018/10/26 12:56:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:剪辑_6.jpg
图片点击可在新窗口打开查看

如上所示,点击查询按钮后,走访结束控件的时间选择后不能控制筛选结果。凡是大于走访开始时间的记录都筛选出来了。问题不知出在哪里?

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


加好友 发短信
等级:童狐 帖子:259 积分:2110 威望:0 精华:0 注册:2018/4/30 16:00:00
  发帖心情 Post By:2018/10/26 13:11:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:剪辑_7.jpg
图片点击可在新窗口打开查看
不过调试还是有问题。

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106050 积分:539343 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/26 13:51:00 [只看该作者]

With e.Form.Controls("走访开始")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "走访记录1 >= #" & .Value & "#   And 走访记录2 >= #" & .Value & "#   And 走访记录3 >= #" & .Value & "#   And 走访记录2 >= #" & .Value & "# "
    End If
End With
With e.Form.Controls("走访结束")
    If .Value IsNot Nothing Then
        If Filter >"" Then
            Filter = Filter & " And "
        End If
        Filter = Filter & "走访记录1 <= #" & .Value & "#   And 走访记录2 <= #" & .Value & "#   And 走访记录3 <= #" & .Value & "#  And 走访记录4 <= #" & .Value & "#"
    End If
End With

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


加好友 发短信
等级:童狐 帖子:259 积分:2110 威望:0 精华:0 注册:2018/4/30 16:00:00
  发帖心情 Post By:2018/10/26 17:53:00 [只看该作者]

or 改 and 筛选无数据结果,还是4楼的复杂代码有希望,就是缺一点可能就成功了。

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


加好友 发短信
等级:童狐 帖子:259 积分:2110 威望:0 精华:0 注册:2018/4/30 16:00:00
  发帖心情 Post By:2018/10/26 18:37:00 [只看该作者]

老师,4楼的代码重新测试有效,可以使用了。非常谢谢!

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


加好友 发短信
等级:童狐 帖子:259 积分:2110 威望:0 精华:0 注册:2018/4/30 16:00:00
  发帖心情 Post By:2018/10/29 9:52:00 [只看该作者]


老师。4楼的代码能够准确的筛选出时间段,但是在与其他列的组合筛选时,譬如选择某个管理站时没有变化,不知为什么?
Dim Filter As String
With e.Form.Controls("管理站")
    If .Value IsNot Nothing Then
        Filter = "管理站 = '" & .Value & "'"
    End If
End With
Dim filter2 As String
For i As Integer = 1 To 4
    Dim f2 As String = ""
    With e.Form.Controls("走访开始")
        If .Value IsNot Nothing Then
            f2 = f2 & "走访记录" & i & " >= #" & .Value & "# "
        End If
    End With
    With e.Form.Controls("走访结束")
        If .Value IsNot Nothing Then
            If f2 >"" Then
                f2 = f2 & " And "
            End If
            f2 = f2 & "走访记录" & i & " <= #" & .Value & "# "
        End If
    End With
    If filter2 >"" Then
        filter2 = filter2 & " or "
    End If
    filter2 = filter2 & f2
Next
If filter2 > "" Then
    msgbox(filter2 )
    If Filter > "" Then
        Filter = Filter & " And "
    End If
    Filter = Filter & filter2
End If

If Filter >"" Then
    Tables("住宅小区基础信息表_住宅小区信息汇总表").Filter = Filter
End If

 回到顶部
总数 17 1 2 下一页