Foxtable(狐表)用户栏目专家坐堂 → [求助]根据多列内容生成筛选树节点如何显示人数统计


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

主题:[求助]根据多列内容生成筛选树节点如何显示人数统计

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
[求助]根据多列内容生成筛选树节点如何显示人数统计  发帖心情 Post By: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

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/25 17:44:00 [显示全部帖子]

和帮助实例类似的统计筛选树已经学会使用。但根据多列内容生成、并且一级节点互不隶属的筛选树如何才能显示统计数据,已经做了多时,实在搞不通才请教老师们的。请老师们指导一下。谢谢。

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By: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编辑过]

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/26 10:21:00 [显示全部帖子]

谢谢老师。再请教老师,下面代码的黄色部分不对,错误提示  【参数“Prompt”无法转换为类型“String”。】。请老师帮助修改。


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

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/26 11:25:00 [显示全部帖子]

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

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/26 15:04:00 [显示全部帖子]

谢谢老师。原因找到,是“msgbox(drs)”的问题。

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/26 15:15:00 [显示全部帖子]

老师好。下面黄底色的代码不对,错误提示【编译错误:应为“)”】。请老师帮助修改。谢谢。

For Each s2 As String In DataTables("员工信息").GetValues("工作部门","岗位类别='" & s1 & "'","部门编码")
     Dim c2 = DataTables("职工基础信息").Compute("Count(_Identify)", ("工作部门","岗位类别='" & s2 & "'")
     Dim n1 As WinForm.TreeNode =  n.Nodes.Add(s2, s2 & " (" & c2 & "人)")
Next

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/26 17:06:00 [显示全部帖子]

老师好。还得请教老师,下面代码还有问题需老师帮助指导。

 问题:1、下面统计“全部的人数”的这行代码不对;

Dim Ygxx As WinForm.TreeView = e.Form.Controls("TreeView1")
Ygxx.StopRedraw    '暂停绘制目录树 
Ygxx.Nodes.Add("全部")
Ygdd.Nodes.Insert("全部","全部 (" & ("员工信息").Compute("Sum(人数)") & "人)",0)


  问题:2、下面代码能统计出“岗位类别”的人数,但黄色代码 不能统计出 “下级节点 即 ‘工作部门’ 的人数”;

    Dim Ygxx As WinForm.TreeView = e.Form.Controls("TreeView1")
    Ygxx.StopRedraw    '暂停绘制目录树 
    Ygxx.Nodes.Add("全部")
    n = Ygxx.Nodes.Add("岗类部门")
    For Each s1 As String In DataTables("员工信息").GetValues("岗位类别","","岗类编码")
        Dim c1 = DataTables("员工信息").Compute("Count(_Identify)", "岗位类别='" & s1 & "'")
        Dim n1 As WinForm.TreeNode =  n.Nodes.Add(s1, s1 & " (" & c1 & "人)")
        For Each s2 As String In DataTables("员工信息").GetValues("工作部门","岗位类别='" & s1 & "'","部门编码")
            Dim c2 = DataTables("员工信息").Compute("Count(_Identify)", "工作部门='" & s2 & "' and 岗位类别='" & s1 & "'")
            Dim n2 As WinForm.TreeNode =  n.Nodes.Add(s2, s2 & " (" & c2 & "人)")
        Next
    Next

问题:3、在窗口增加了个“刷新目录树” 按钮,但每点一次刷新,就在 “TreeView” 控件重复增加一遍所有目录树节点。点几次刷新,就在 “TreeView” 控件重复增加几遍所有目录树节点。不是刷新而是在增加。
[此贴子已经被作者于2019/6/26 17:09:15编辑过]

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/27 8:41:00 [显示全部帖子]

谢谢老师帮助。统计总人数这句【Ygdd.Nodes.Insert("全部","全部 (" & Tables("员工信息").Compute("Sum(人数)") & "人)", 0)统计不出人数来。还请老师修改。谢谢。
[此贴子已经被作者于2019/6/27 8:41:29编辑过]

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


加好友 发短信
等级:一尾狐 帖子:493 积分:3637 威望:0 精华:0 注册:2018/6/8 21:14:00
  发帖心情 Post By:2019/6/27 10:43:00 [显示全部帖子]

谢谢老师。还有一个问题得请教老师,比如下面老师指导的代码:

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

上述代码是按“户籍地”来统计个数,但“户籍地”有空白的单元格,这样统计出的数字是:【    (0人);户籍地甲(20人);户籍地乙(5人);户籍地丙(16人)】。实际的户籍地为空的是(15人),但统计的是(0人)。能否改为按姓名列来统计户籍地,即统计结果变为这样:【   (15人);户籍地甲(20人);户籍地乙(5人);户籍地丙(16人)】。请老师指导帮助。谢谢
[此贴子已经被作者于2019/6/27 10:45:57编辑过]

 回到顶部
总数 14 1 2 下一页