Foxtable(狐表)用户栏目专家坐堂 → [求助] 我的筛选代码出错了吗?


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

主题:[求助] 我的筛选代码出错了吗?

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


加好友 发短信
等级:幼狐 帖子:174 积分:2349 威望:0 精华:0 注册:2015/8/12 15:36:00
[求助] 我的筛选代码出错了吗?  发帖心情 Post By:2016/12/4 11:03:00 [只看该作者]

Dim trv As WinForm.TreeView = e.Sender
Dim flt As String
For Each nd As WinForm.TreeNode In e.node.Nodes '清除子节点选中状态
    nd.Checked = False
Next
If e.node.ParentNode IsNot Nothing Then '去掉父节点选中状态
    e.node.ParentNode.Checked = False
End If
For Each nd As WinForm.TreeNode In trv.AllNodes
    If nd.Checked Then
        If flt > "" Then
            flt = flt & " Or "  '注意用or而不是And
        End If
        Dim d1 As Date
        Dim d2 As Date
        Dim Year As Integer = e.Node.DataRow("年")
        Dim Month As Integer = e.Node.DataRow("月")
        
        Select Case e.Node.Level
            Case 0
                d1 = New Date(Year,1,1) '取得该年的第一天
                d2 = new Date(Year,12,31) '取得该年的最后一天
                flt = flt & "(日期 >= '" & d1 & "' And 日期 <= '" & d2 & "')"
            Case 1
                d1 = New Date(Year, Month, 1) '取得该月的第一天
                d2 = new Date(Year, Month, Date.DaysInMonth(Year,Month)) '取得该月的最后一天
                flt = flt & "(日期 >= '" & d1 & "' And 日期 <= '" & d2 & "')"
            Case 2
                d1 = New Date(Year,1,1) '取得该年的第一天
                d2 = new Date(Year,12,31) '取得该年的最后一天
                flt = flt & "(日期 >= '" & d1 & "' And 日期 <= '" & d2 & "' and 班组 = '" & nd.Text & "')"
            Case 3
                d1 = New Date(Year,1,1) '取得该年的第一天
                d2 = new Date(Year,12,31) '取得该年的最后一天
                flt = flt & "(日期 >= '" & d1 & "' And 日期 <= '" & d2 & "'and 班组 = '" & nd.ParentNode.Text & "' And 姓名 = '" & nd.Text & "')"
        End Select
    End If
Next
Tables("报表_table1").Filter = flt

当需同时筛选 (同时选定2015,2016),则仅显示2016年的数据,而不是2015和2016的数据,是哪里出错了呢

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


加好友 发短信
等级:超级版主 帖子:13837 积分:69650 威望:0 精华:0 注册:2016/11/1 14:42:00
  发帖心情 Post By:2016/12/4 14:50:00 [只看该作者]

1、msgbox(flt) 看弹出些什么。

 

2、日期的筛选不要用单引号,要用#号。如  flt = flt & "(日期 >= #" & d1 & "# And 日期 <= #" & d2 & "#)"


 回到顶部