以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]根据多列内容生成筛选树节点如何显示人数统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=136964)

--  作者:hanzhang98
--  发布时间:2019/6/25 16:31:00
--  [求助]根据多列内容生成筛选树节点如何显示人数统计
老师好。下面代码是老师指导的、根据多列内容动态生成筛选树。现在想实现在各个节点显示人数统计,代码如何修改才行,请老师帮助。谢谢。

Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")  
trv.Nodes.Add("全部")
Dim n As WinForm.TreeNode = trv.Nodes.Add("性别")
n.Nodes.Add("男")
n.Nodes.Add("女")
n = trv.Nodes.Add("民族")
For Each s As String In DataTables("员工信息").GetValues("民族")
    n.Nodes.Add(s)
Next
n = trv.Nodes.Add("籍贯")
For Each s As String In DataTables("员工信息").GetValues("籍贯")
    n.Nodes.Add(s)
Next
n = trv.Nodes.Add("岗类部门")
For Each s1 As String In DataTables("员工信息").GetValues("岗位类别","","岗类编码")
    Dim n1 As WinForm.TreeNode =  n.Nodes.Add(s1)
    For Each s2 As String In DataTables("员工信息").GetValues("工作部门","岗位类别=\'" & s1 & "\'","部门编码")
        n1.Nodes.Add(s2)
    Next
Next

--  作者:狐狸爸爸
--  发布时间:2019/6/25 17:27:00
--  
可以参考一下:
http://www.foxtable.com/webhelp/topics/2741.htm

--  作者:hanzhang98
--  发布时间:2019/6/25 17:44:00
--  
和帮助实例类似的统计筛选树已经学会使用。但根据多列内容生成、并且一级节点互不隶属的筛选树如何才能显示统计数据,已经做了多时,实在搞不通才请教老师们的。请老师们指导一下。谢谢。
--  作者:有点甜
--  发布时间:2019/6/25 18:31:00
--  

比如

 

For Each s As String In DataTables("员工信息").GetValues("民族")
    Dim c = DataTables("员工信息").compute("count(_Identify)", "民族=\'" & s & "\'")
    n.Nodes.Add(s, s & "(" & c & ")")
Next

--  作者:hanzhang98
--  发布时间:2019/6/26 8:38:00
--  
谢谢老师。还得再请教老师,下面点击目录树节点的代码要如何修改才能与4楼代码配套。

Dim Filter As String = ""
Dim dr As DataRow = e.Node.DataRow  
Dim tbl As Table = Tables("员工信息") 
Dim ary = e.node.fullpath.split("\\")
If e.node.level > 0 \'第二层节点开始
    Select Case ary(0)
        Case "性别"
            Filter = "性别 = \'" & ary(1) & "\'"
        Case "民族"
            Filter = "民族 = \'" & ary(1) & "\'"
        Case "籍贯"
    End Select
    tbl.Filter = filter
ElseIf e.node.text = "全部"
    tbl.Filter = ""
End If
[此贴子已经被作者于2019/6/26 15:05:20编辑过]

--  作者:有点甜
--  发布时间:2019/6/26 9:44:00
--  

Dim ary = e.node.fullpath.split("\\")

 

改成

 

Dim ary = e.node.fullName.split("\\")


--  作者:hanzhang98
--  发布时间:2019/6/26 10:21:00
--  
谢谢老师。再请教老师,下面代码的黄色部分不对,错误提示  【参数“Prompt”无法转换为类型“String”。】。请老师帮助修改。


[此贴子已经被作者于2019/6/26 15:04:39编辑过]

--  作者:有点甜
--  发布时间:2019/6/26 10:31:00
--  

 

你vars("filter")是如何赋值的?请贴出给其赋值的代码。

 

 


--  作者:hanzhang98
--  发布时间:2019/6/26 11:25:00
--  
老师好。目录树点击代码、及vars("filter")赋值的代码如下:
    Vars("Filter") = Tables("管理_Table1").Filter  
[此贴子已经被作者于2019/6/26 15:05:58编辑过]

--  作者:有点甜
--  发布时间:2019/6/26 11:41:00
--  

 

不可能,上传实例测试。