Foxtable(狐表)用户栏目专家坐堂 → 加载树显示统计数据


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

主题:加载树显示统计数据

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


加好友 发短信
等级:幼狐 帖子:197 积分:1351 威望:0 精华:0 注册:2019/3/31 11:25:00
加载树显示统计数据  发帖心情 Post By:2019/8/29 11:13:00 [只看该作者]

老师好! 我的数据是SQL Server,我本机模拟服务器运行以下代码正常,请问如何在加载树显示统计数据,
一直改不成功,请老师帮帮我!

'----用SQL语句设计加载树--P2054----
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 进度,单位名称,报单日期 Fr om {计划单}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt,"进度|单位名称|报单日期")
trv.Nodes.Insert("加载所有数据",0)



Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = ""
Else
    Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
    Select Case e.Node.Level
        Case 0
            Filter ="[进度] = '" & dr("进度") & "'"
        Case 1
            Filter ="[进度] = '" & dr("进度") & "' And [单位名称] = '" & dr("单位名称") & "'"
        Case 2
            Filter ="[进度] = '" & dr("进度") & "' And [单位名称] = '" & dr("单位名称") & "'And [报单日期] = '" & dr("报单日期") & "'"
    End Select
End If
DataTables("计划单").LoadFilter = Filter
DataTables("计划单").Load()
[此贴子已经被作者于2019/8/29 11:35:23编辑过]

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


加好友 发短信
等级:超级版主 帖子:110764 积分:563752 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/29 11:21:00 [只看该作者]


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


加好友 发短信
等级:幼狐 帖子:197 积分:1351 威望:0 精华:0 注册:2019/3/31 11:25:00
  发帖心情 Post By:2019/8/29 11:35:00 [只看该作者]

抱歉老师,我刚才参考发的地址错了,就是您发的这个,我没做成功,总出错

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


加好友 发短信
等级:超级版主 帖子:110764 积分:563752 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/29 11:37:00 [只看该作者]

不需要使用SQLCommand,直接使用SQLGroupTableBuilder进行统计生成统计表即可

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


加好友 发短信
等级:幼狐 帖子:197 积分:1351 威望:0 精华:0 注册:2019/3/31 11:25:00
  发帖心情 Post By:2019/8/29 11:47:00 [只看该作者]

老师,如果我希望只筛选“进度”列里, ‘已审核’ 的内容,请问怎么改?

'----用SQL语句设计加载树--P2054----
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT 进度,单位名称,报单日期 Fr om {计划单}"
dt = cmd.ExecuteReader()
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt,"进度|单位名称|报单日期")
trv.Nodes.Insert("加载所有数据",0)


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


加好友 发短信
等级:超级版主 帖子:110764 积分:563752 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/29 11:52:00 [只看该作者]

cmd.CommandText = "SELECT DISTINCT 进度,单位名称,报单日期 Fr om {计划单} where  进度='已审核'"

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


加好友 发短信
等级:幼狐 帖子:197 积分:1351 威望:0 精华:0 注册:2019/3/31 11:25:00
  发帖心情 Post By:2019/8/30 12:00:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:126789.png
图片点击可在新窗口打开查看


老师好!我写的还是有问题,我希望通过加载树只加载“已报单”的计划单,第一层是单位名称,第二层是报单日期。  单位上的统计数应该是3,第二个日期里出现了非 已报单的,请老师帮助我看看,是哪里错了

Dim dt As DataTable
Dim b As New SQLGroupTableBuilder("统计表1","计划单")
b.C
'b.Groups.AddDef("进度")
b.Groups.AddDef("单位名称")
b.Groups.AddDef("报单日期", DateGroupEnum.None) '根据日期按年分组)
b.Totals.AddDef("_Identify",AggregateEnum.Count,"订单数") '根据主键列来统计记录数,也就是订单数
b.Filter = "{计划单}.进度 = '已报单'"
dt = b.Build(True) '参数设置为True,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "单位名称|报单日期")
trv.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Product As String = nd.DataRow("单位名称")
    Dim Year As Date = nd.DataRow("报单日期")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "(" & nd.DataRow("订单数") & ")"
        Case 1
            nd.Text = nd.text & "(" & nd.DataRow("订单数") & ")"
    End Select
Next
'trv.Nodes.Insert("加载所有行","加载所有行(" & dt.Compute("Sum(订单数)") & "条)",0)
trv.ResumeRedraw



Dim Filter As String
If e.node.Text = "加载所有数据" Then
    Filter = "进度= '已报单'"
Else
    Dim dr As DataRow = e.Node.DataRow '获取生成此节点的DataRow
    Select Case e.Node.Level
        Case 0
            Filter ="[单位名称] = '" & dr("单位名称") & "'"
        Case 1
            Filter ="[单位名称] = '" & dr("单位名称") & "'And [报单日期] = '" & dr("报单日期") & "'"
    End Select
End If
DataTables("计划单").LoadFilter = Filter
DataTables("计划单").Load()

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


加好友 发短信
等级:超级版主 帖子:110764 积分:563752 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/30 14:04:00 [只看该作者]

……
b.Filter = "进度 = '已报单'"
dt = b.Build(True) '参数设置为True,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "单位名称|报单日期")
trv.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Product As String = nd.DataRow("单位名称")
    Dim Year As Date = nd.DataRow("报单日期")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "(" & dt.compute("sum(订单数)","单位名称='" & Product & "'") & ")"
        Case 1
            nd.Text = nd.text & "(" & nd.DataRow("订单数") & ")"
    End Select
Next

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


加好友 发短信
等级:幼狐 帖子:197 积分:1351 威望:0 精华:0 注册:2019/3/31 11:25:00
  发帖心情 Post By:2019/8/31 10:06:00 [只看该作者]

老师好! 代码测试后, 后面显示的统计数(1+2=3)是对的,但是根据条件后台加载的计划单12行不对,请问怎么改

图片点击可在新窗口打开查看此主题相关图片如下:123256.png
图片点击可在新窗口打开查看

Dim dt As DataTable
Dim b As New SQLGroupTableBuilder("统计表1","计划单")
b.C
'b.Groups.AddDef("进度")
b.Groups.AddDef("单位名称")
b.Groups.AddDef("报单日期", DateGroupEnum.None) '根据日期按年分组)
b.Totals.AddDef("_Identify",AggregateEnum.Count,"订单数") '根据主键列来统计记录数,也就是订单数
b.Filter = "进度 = '待复核'"
dt = b.Build(True) '参数设置为True,生成一个临时表,不在主界面显示
'然后根据统计表生成目录树
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
trv.BuildTree(dt, "单位名称|报单日期")
trv.StopRedraw
For Each nd As WinForm.TreeNode In trv.AllNodes
    Dim Product As String = nd.DataRow("单位名称")
    Dim Year As Date = nd.DataRow("报单日期")
    Select Case nd.Level
        Case 0
            nd.Text = nd.text & "(" & dt.compute("sum(订单数)","单位名称='"& Product & "'") &")" 
        Case 1
            nd.Text = nd.text & "(" & nd.DataRow("订单数") & ")"
    End Select
Next
'trv.Nodes.Insert("加载所有行","加载所有行(" & dt.Compute("Sum(订单数)") & "条)",0)
trv.ResumeRedraw
[此贴子已经被作者于2019/8/31 10:08:45编辑过]

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


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

什么东西不对?没看出来

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