以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]实现以下数据统计,代码该怎么写  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=84032)

--  作者:无我是天机
--  发布时间:2016/4/21 18:45:00
--  [求助]实现以下数据统计,代码该怎么写
请教:要根据附件图1表通过数据统计得到附件图2的结果,代码该怎么写(测试数据见附件项目)?
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目4.rar

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

[此贴子已经被作者于2016/4/21 18:49:06编辑过]

--  作者:无我是天机
--  发布时间:2016/4/21 18:48:00
--  
不好意思,刚忘了上传图2
图片点击可在新窗口打开查看此主题相关图片如下:图2.jpg
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/4/21 20:54:00
--  

参考代码

 

Dim month As Integer = 2

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("产品名称", Gettype(String), 16)
Dim prds As List(of String) = DataTables("test").GetValues("部门")
Dim sum_y As String = ""
Dim sum_n As String = ""
For Each prd As String In prds
    sum_y &= "isnull(" & prd & "_本月,0)+"
    sum_n &= "isnull(" & prd & "_本年,0)+"
    dtb.AddDef(prd & "_本月", Gettype(Double))
    dtb.AddDef(prd & "_本年", Gettype(Double))
Next
dtb.AddDef("合计_本月", Gettype(Double), sum_y.trim("+"))
dtb.AddDef("合计_本年", Gettype(Double), sum_n.trim("+"))
dtb.AddDef("累计数百分比", Gettype(Double), "合计_本月/合计_本年")
dtb.Build()
For Each cus As String In DataTables("test").GetValues("产品名称")
    Dim dr As DataRow = DataTables("统计").AddNew()
    dr("产品名称") = cus
    For Each prd As String In prds
        dr(prd & "_本月") = DataTables("test").Compute("Sum(销售额)","产品名称 = \'" & cus & "\' And 部门 = \'" & prd & "\' and 月份 = \'" & month & "\'")
        dr(prd & "_本年") = DataTables("test").Compute("Sum(销售额)","产品名称 = \'" & cus & "\' And 部门 = \'" & prd & "\'")
    Next
Next
MainTable= Tables("统计")


--  作者:无我是天机
--  发布时间:2016/4/22 0:16:00
--  
非常感谢红袍老师,这么晚了还在回复。
--  作者:无我是天机
--  发布时间:2016/4/22 14:31:00
--  
红袍老师,还要在请教您一下。按照您的参考代码,我调整完后把代码放到了窗口的一个按钮事件中,最后Tables("窗口1_Table1").DataSource = DataTables("统计")(见附件项目),点击按钮后,在窗口的table1控件中显示的和DataTables("统计")中显示的结果不一样:窗口的table1控件合计行显示不出来、累计数百分比显示的是小数(代码中本来是设置为百分比格式的),见附件截图对比。
[此贴子已经被作者于2016/4/22 14:36:17编辑过]

--  作者:无我是天机
--  发布时间:2016/4/22 14:38:00
--  
附件好像上传不了呢
[此贴子已经被作者于2016/4/22 14:40:48编辑过]

--  作者:大红袍
--  发布时间:2016/4/22 14:48:00
--  

1、先写代码

 

Tables("窗口1_Table1").DataSource = DataTables("统计")

 

2、然后针对 Tables("窗口1_Table1") 设置合计、列百分比格式


--  作者:无我是天机
--  发布时间:2016/4/22 14:58:00
--  
OK,懂了。感谢!