以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  用递归函数生成会计科目目录树,如何只筛选出末级科目?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=144299)

--  作者:sloyy
--  发布时间:2019/12/16 17:20:00
--  用递归函数生成会计科目目录树,如何只筛选出末级科目?
例子里有个"递归函数生成会计科目目录树"

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

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
If
e.Node.Name = "全部" Then
   
Tables("会计科目").Filter = ""
Else

    Tables("会计科目").Filter = "科目代码 Like \'" & e.Node.Name &
"%\'"

End
If

这样双击某个节点,即可将此节点及其子节点对应的行全部筛选出来。


这是原始例子的代码;


现在我想改一下: 双击某个节点,将此节点及其子节点对应的最末一级科目全部筛选出来,要如何改代码?

不是在目录树里筛选,是在表里面筛选

[此贴子已经被作者于2019/12/16 17:21:09编辑过]

--  作者:有点蓝
--  发布时间:2019/12/16 17:38:00
--  
Dim s As String = ""
For Each n As WinForm.TreeNode In e.Node.AllNodes
    If n.Nodes.Count = 0 Then
        s = s & ",\'" & n.name & "\'"
    End If
Next

Tables("会计科目").Filter = "科目代码 in (" & s.trim(",") & ")"

--  作者:sloyy
--  发布时间:2019/12/17 15:42:00
--  
谢谢蓝大师,不过代码有个bug,双击最末一级科目,反倒取不到值,还要改一下
--  作者:有点蓝
--  发布时间:2019/12/17 15:52:00
--  
Dim s As String = ""
if e.Node.nodes.count = 0 then
s = "\'" & e.Node.name & "\'"
else
For Each n As WinForm.TreeNode In e.Node.AllNodes
    If n.Nodes.Count = 0 Then
        s = s & ",\'" & n.name & "\'"
    End If
Next
end if

--  作者:sloyy
--  发布时间:2019/12/17 16:13:00
--  
干得漂亮图片点击可在新窗口打开查看