以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  求助:多选筛选树的代码  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=21068)

--  作者:wjl-se
--  发布时间:2012/6/29 14:16:00
--  求助:多选筛选树的代码

引用帮助中的多选目录树:

目录树的AfterCheckNode事件代码设置为:

Dim trv As WinForm.TreeView = e.Sender
Dim
flt As String
For
Each nd As WinForm.TreeNode In e.node.Nodes \'同步子节点选中状态
    nd.Checked = e.Node.
Checked
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.Level > 0 AndAlso nd.ParentNode.Checked Then
\'如果父节点选中
        Continue For
\'跳过此节点,处理下一结点
    End If
    If nd.Checked Then
        If flt > "" Then
            flt = flt & " Or " 
\'注意用or而不是And
        End If
        If nd.Level = 0 Then
\'注意下面的条件都要用括号括起来
            flt = flt &
"( 产品 = \'" & nd.Text & "\')"
       
Else
            flt = flt & "( 产品 = \'" & nd.ParentNode.Text & "\' And 客户 = \'" & nd.Text & "\')"
        End If
    End If   

Next
Tables
("订单").Filter = flt

 

现在我想在“订单总表中”实现 "部门|年|月" 的多选筛选树,代码应该怎么写?请老师帮忙,谢谢!(“年”“月”来自订单总表里的“填报日期”列)

[此贴子已经被作者于2012-6-29 14:25:30编辑过]

--  作者:狐狸爸爸
--  发布时间:2012/6/29 14:39:00
--  

嘿嘿,这个可不简单,有空我再帮你看看吧。


--  作者:wjl-se
--  发布时间:2012/6/29 14:50:00
--  
多谢狐爸!!
--  作者:UF
--  发布时间:2012/6/29 17:04:00
--  
拼接不行吗?
--  作者:wjl-se
--  发布时间:2012/7/3 15:38:00
--  
变通一下,增加两列表达式,分别得出“年”,“月”,上面的代码该怎么写呢?主要是最后面的几句。。。
--  作者:狐狸爸爸
--  发布时间:2012/7/3 15:57:00
--  

计算年月的话,直接用表达式就行:

 

http://www.foxtable.com/help/topics/1285.htm

 


--  作者:wjl-se
--  发布时间:2012/7/3 16:04:00
--  

哦,不是这个意思。为了实现“部门|年|月”的多选筛选树,我又增加了两个表达式列,得到了“年”和“月”,这样是不是就可以套用一楼的代码了?如果可以,应该怎么改?自己照葫芦画瓢没成功...


--  作者:狐狸爸爸
--  发布时间:2012/7/3 16:20:00
--  

其实一模一样的:

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:统计演示.table

请仔细分析一下,你的为什么不行,然后告诉我原因。


--  作者:wjl-se
--  发布时间:2012/7/3 22:33:00
--  

改成"年|月|部门"就可以了图片点击可在新窗口打开查看 可是这不是我想要的。

 

记得在数据统计一章说过,日期必须放在前面,只是知道,但不知道为什么。再说,我用表达式得到的“年”和“月”都是字符型的呀。

那问题可能就在表达式身上了,应该跟这个有关吧。之前发过帖问过筛选树的问题,说表达式的日期不能生成筛选树。可是我现在生成的是字符型的列,不是日期啊。

 

表达式还有什么特殊性?还请狐爸指点迷津……


--  作者:狐狸爸爸
--  发布时间:2012/7/4 7:58:00
--  

改成"年|月|部门"就可以了,任何情况都可以,只要你合成的表达式正确。

不要只说不行,如果搞不定,就像我这样做个例子,只是你要做的是不行的例子。