以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 多选的筛选树,怎么把日期拆成月和日? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=45992) |
-- 作者:小刚 -- 发布时间:2014/2/14 18:21:00 -- 多选的筛选树,怎么把日期拆成月和日? 通用设计 上述常规编码方式,目录树的层级越多,代码就越复杂,下面我们提供一个通用的筛选树代码,不过有多少层,代码都一样。 设计步骤同样很简单: 1、新建一个窗口,插入一个目录树控件,将目录树的“显示复选框”属性设置为True。 2、将窗口的AfterLoad事件代码设置为: e.Form.Controls("TreeView1").BuildTree("订单", "产品|客户|雇员") 3、将目录树的AfterCheckNode事件代码设置为: Dim nms As String() = {"产品","客户","雇员"}
\'指定生成目录树的各列
我想把可选的筛选树改成 客户名称|出货月份|出货日期 三个目录树 但是 【订表】里面只有 “客户名称”和“出货日期”,没有“出货月份”的,不知道是否可以改?该如何改? |
-- 作者:kylin -- 发布时间:2014/2/15 8:17:00 -- 简单的办法:自己添加两个列“月”和“日”,从“出货日期”中计算出“月”和“日”,之后按你设想的重新建一个筛选树 [此贴子已经被作者于2014-2-15 8:17:58编辑过]
|
-- 作者:Bin -- 发布时间:2014/2/15 8:53:00 -- 参考帮助,利用SQL语句生成一个新的 月 日分开的表http://www.foxtable.com/help/topics/0917.htm |
-- 作者:小刚 -- 发布时间:2014/2/15 10:53: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 Dim Value()As String Value = e.Node.FullName.Split("\\") For Each nd As WinForm.TreeNode In trv.AllNodes If nd.Checked Then If flt > "" Then flt = flt & " Or " \'注意用or而不是And End If If nd.Level = 0 Then \'注意下面的条件都要用括号括起来 flt = flt & "( 客户名称 = \'" & nd.Text & "\')" ElseIf nd.Level = 1 flt = flt & "( 客户名称 = \'" & nd.ParentNode.Text & "\') & " And "Year(下单日期) = " & Value(0) ElseIf nd.Level = 2 flt = flt & "( 客户名称 = \'" & nd.ParentNode.Text & "\') & " And "Year(下单日期) = " & Value(0) & " And Month(下单日期) = " & Value(1) ElseIf nd.Level = 3 flt = flt & "( 客户名称 = \'" & nd.ParentNode.Text & "\') & " And "Year(下单日期) = " & Value(0) & " And Month(下单日期) = " & Value(1) & " And day(下单日期) = " & Value(2) End If End If Next Tables("财务").Filter = flt 想要的效果如图: |
-- 作者:Bin -- 发布时间:2014/2/15 10:55:00 -- 如上代码本来就是只选中单项的啊? |
-- 作者:小刚 -- 发布时间:2014/2/15 11:10:00 -- 我不会改,要选多项的。帮忙改一下,谢谢!那是效果图,意思是可以多项也可以单项,也可以整月选的。就这个意思。 [此贴子已经被作者于2014-2-15 11:10:45编辑过]
|
-- 作者:Bin -- 发布时间:2014/2/15 11:11:00 -- 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 这两段代码不是有注译么,根据自身需求去掉即可, 你分别去掉 还有两段都去掉, 看看那个才是符合你需求的效果.
|