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的数据,是哪里出错了呢