以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助] 我的筛选代码出错了吗?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=93673)

--  作者:农村人
--  发布时间: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的数据,是哪里出错了呢

--  作者:有点色
--  发布时间:2016/12/4 14:50:00
--  

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

 

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