以文本方式查看主题 - 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 & "#)" |