Foxtable(狐表)用户栏目专家坐堂 → 用递归函数生成会计科目目录树,如何只筛选出末级科目?


  共有2649人关注过本帖树形打印复制链接

主题:用递归函数生成会计科目目录树,如何只筛选出末级科目?

帅哥哟,离线,有人找我吗?
sloyy
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2180 积分:13816 威望:0 精华:2 注册:2012/2/25 10:59:00
用递归函数生成会计科目目录树,如何只筛选出末级科目?  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2180 积分:13816 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2019/12/17 15:42:00 [只看该作者]

谢谢蓝大师,不过代码有个bug,双击最末一级科目,反倒取不到值,还要改一下

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107730 积分:547983 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2180 积分:13816 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2019/12/17 16:13:00 [只看该作者]

干得漂亮图片点击可在新窗口打开查看

 回到顶部