Foxtable(狐表)用户栏目专家坐堂 → [求助]如何打印包含统计数据的筛选树?


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

主题:[求助]如何打印包含统计数据的筛选树?

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


加好友 发短信
等级:童狐 帖子:225 积分:2015 威望:0 精华:0 注册:2015/12/23 11:59:00
[求助]如何打印包含统计数据的筛选树?  发帖心情 Post By:2016/12/13 18:43:00 [只看该作者]

图片点击可在新窗口打开查看
如图的筛选目录树,如何打印出来?

用excel报表能实现吗?还是需要导出成excel文件,再利用excel程序的统计功能实现?
[此贴子已经被作者于2016/12/13 18:48:07编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/13 20:13:00 [只看该作者]

你是想打印左边的目录树?还是只是想输出统计数据?

如果要打印目录树这个非常麻烦,可以考虑用专业报表做,自己计算节点的打印位置

如果想输出统计数据,直接做个分组统计,然后把统计表按平时Excel报表做就可以

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


加好友 发短信
等级:童狐 帖子:225 积分:2015 威望:0 精华:0 注册:2015/12/23 11:59:00
回复:(有点蓝)你是想打印左边的目录树?还是只是想...  发帖心情 Post By:2016/12/14 9:18:00 [只看该作者]

我还是导出成execl文件,然后用EXCEL的数据透视表功能实现打印吧。

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


加好友 发短信
等级:童狐 帖子:225 积分:2015 威望:0 精华:0 注册:2015/12/23 11:59:00
回复:(有点蓝)你是想打印左边的目录树?还是只是想...  发帖心情 Post By:2016/12/14 9:25:00 [只看该作者]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

'首先生成统计
Dim
 dt As DataTable
Dim
 b As New GroupTableBuilder("统计表1",DataTables("订单"))
b
.Groups.AddDef("日期",DateGroupEnum.Year,"年")
b
.Groups.AddDef("日期",DateGroupEnum.Month,"")
b
.Groups.AddDef("产品")
b
.Totals.AddDef("客户",AggregateEnum.Count,"订单数") '根据客户列来统计记录数,也就是订单数
dt
 = b.Build(False) '参数设置为False,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树

Dim
 trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv
.BuildTree(dt"||产品")
trv
.StopRedraw
For
 Each nd As WinForm.TreeNode In trv.AllNodes
    
Dim Year As Integer = nd.DataRow("")
    
Dim Month As Integer = nd.DataRow("")
    
Dim Product As String = nd.DataRow("产品")
    
Select Case nd.Level
        
Case 0
            
nd.Text = nd.text & "(" & dt.Compute("Sum(订单数)"," = " & Year& ")"
        
Case 1
            
nd.Text = nd.text & "(" & dt.Compute("Sum(订单数)"," = " & Year & " And  = " & Month& ")"
        
Case 2
            
nd.Text = nd.text & "(" & nd.DataRow("订单数"& ")"
    
End Select
Next

trv
.Nodes.Insert("显示所有行","显示所有行(" & dt.Compute("Sum(订单数)"& "条)",0)
trv
.ResumeRedraw


第3行,生成了一个临时统计表。
如果希望实现关闭目录树窗口时,如何写删除这个临时表的代码?

第8行的效果没有实现,可以在主窗口中看到这个统计表。
[此贴子已经被作者于2016/12/14 9:25:33编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/14 9:47:00 [只看该作者]

临时表关闭窗口就会自动删除的,不用管。

代码不是有注释的吗
dt = b.Build(False) '参数设置为False,生成一个临时表,不在主界面显示

要显示这样
b.Build()
dt = datatables("统计表1")

关闭窗口的时候AfterClose事件
DataTables.Unload("统计表1")

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


加好友 发短信
等级:童狐 帖子:225 积分:2015 威望:0 精华:0 注册:2015/12/23 11:59:00
  发帖心情 Post By:2016/12/14 10:31:00 [只看该作者]

代码不是有注释的吗
dt = b.Build(False) '参数设置为False,生成一个临时表,不在主界面显示

用的是这行代码。但是,一能在主界面显示,二窗口关闭时不自动删除。

所以要在afterclose事件中加一句删除代码。

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110597 积分:562881 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/14 10:45:00 [只看该作者]

 b.Build(False)不会在主界面显示的。

只能是之前调用过 b.Build(),生成过同名的统计表

 回到顶部