以文本方式查看主题 - 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=147348) |
-- 作者:天一生水 -- 发布时间:2020/3/14 16:47:00 -- [求助]带统计的目录树排序 老师好! 生成的统计表及目录树如下图,怎样使目录树中的第三层节点,按照节点中的统计数从大到小排序。 谢谢! \'首先生成统计表 Dim dt As DataTable Dim b As New GroupTableBuilder("统计表1",DataTables("复核表")) b.Groups.AddDef("报送年份") b.Groups.AddDef("合作单位") b.Groups.AddDef("复核人") b.Totals.AddDef("报告号",AggregateEnum.Count,"次数") \'根据客户列来统计记录数,也就是订单数 dt = b.Build(True) \'参数设置为True,生成一个临时表,不在主界面显示 Tables("客户查询_Table1").DataSource= b.BuildDataSource() \'统计表放入指定窗口表 Tables("客户查询_Table1").Sort = "次数 DESC" \'然后根据统计表生成目录树 Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1") trv.BuildTree(dt, "报送年份|复核人|合作单位") trv.StopRedraw For Each nd As WinForm.TreeNode In trv.AllNodes Dim Product1 As String = nd.DataRow("报送年份") Dim Product2 As String = nd.DataRow("复核人") Dim Product3 As String = nd.DataRow("合作单位") Select Case nd.Level Case 0 nd.Text = nd.text & "(" & dt.Compute("Sum(次数)","报送年份 = \'" & nd.Text & "\'") & ")" Case 1 nd.Text = nd.text & "(" & dt.Compute("Sum(次数)","报送年份 = \'" & Product1 & "\' And 复核人= \'" & nd.Text & "\'") & ")" Case 2 nd.Text = nd.text & "(" & dt.Compute("Sum(次数)","报送年份 = \'" & Product1 & "\' And 复核人= \'" & Product2 & "\' And 合作单位= \'" & nd.Text & "\'") & ")" End Select Next trv.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("Sum(次数)") & ")",0) trv.ResumeRedraw |
-- 作者:程兴刚 -- 发布时间:2020/3/14 16:56:00 -- 帮助文件细看一下,这一句trv.BuildTree(dt, "报送年份|复核人|合作单位")指定排序列为降序排列! |
-- 作者:天一生水 -- 发布时间:2020/3/14 17:15:00 -- 程版,我试过,[次数]这一列不在目录树里,报错了。 |
-- 作者:有点蓝 -- 发布时间:2020/3/14 17:22:00 -- 和目录树没有关系,表格有就行: trv.BuildTree(dt, "报送年份|复核人|合作单位","","次数 DESC")
|
-- 作者:天一生水 -- 发布时间:2020/3/14 17:42:00 -- 谢谢两位版主,刚才自己漏了个参数 |