以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何生成柱状+线状图标 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=49238) |
||||
-- 作者:wealthwind -- 发布时间:2014/4/14 22:38:00 -- [求助]如何生成柱状+线状图标 待解决问题: 1.如何在下面这份表中增加“合计”项;(图表1) 2.增加完合计项目后,并用这份临时表,生成类似的图表(按月);(图表2)
现在用原代码是
MainTable = Tables("订单") Dim Cmd As new SQLCommand Cmd.ConnectionName = "foxsale" Cmd.CommandText = "select distinct 分区,年,月份,目标 from 目标 where " & CustomFilter Dim dt1 As DataTable = Cmd.ExecuteReader Dim dtb As New DataTableBuilder("统计") dtb.AddDef("分区", Gettype(String), 50) Dim prds As List(of String()) = dt1.GetUniqueValues("","年","月份") Dim exp As String dtb.AddDef("目标总额", Gettype(Double)) dtb.AddDef("销售总额", Gettype(Double)) dtb.AddDef("达成率", Gettype(Double),"[销售总额]/[目标总额]") For Each prd As String() In prds dtb.AddDef(prd(0) & "_" & prd(1) & "_目标", Gettype(Double)) dtb.AddDef(prd(0) & "_" & prd(1) & "_销售", Gettype(Double)) exp = String.format("[{0}]/[{1}]",prd(0) & "_" & prd(1) & "_销售" ,prd(0) & "_" & prd(1) & "_目标" ) dtb.AddDef(prd(0) & "_" & prd(1) & "_达成率", Gettype(Double),exp) Next dtb.Build() Cmd.CommandText = "select 分区,year(日期) as 年,month(日期) as 月份,sum(金额) as 销售 from 订单 where " & CustomFilter & " group by 分区,year(日期),month(日期)" Dim dt2 As DataTable = Cmd.ExecuteReader For Each cus As String In dt1.GetUniqueValues("","分区") Dim dr As DataRow = DataTables("统计").AddNew() dr("分区") = cus For Each prd As String() In prds dr(prd(0) & "_" & prd(1) & "_目标") = dt1.Compute("Sum(目标)","分区 = \'" & cus & "\' And [年] = \'" & prd(0) & "\' and 月份 = \'"& prd(1) &"\'") dr(prd(0) & "_" & prd(1) & "_销售") = dt2.Compute("Sum(销售)","分区 = \'" & cus & "\' And [年] = \'" & prd(0) & "\' and 月份 = \'"& prd(1) &"\'") Next dr("目标总额") = dt1.Compute("Sum(目标)","分区 = \'" & cus & "\'") dr("销售总额") = dt2.Compute("Sum(销售)","分区 = \'" & cus & "\'") Next For Each prd As String() In prds DataTables("统计").DataCols(prd(0) & "_" & prd(1) & "_达成率").SetFormat("0.00%") Next DataTables("统计").DataCols("达成率").SetFormat("0.00%") MainTable = Tables("统计") Tables("统计").AutoSizeCols 此主题相关图片如下:qq图片20140414223648.jpg 此主题相关图片如下:qq图片20140414223655.jpg |
||||
-- 作者:xiaoqiwei -- 发布时间:2014/4/14 23:14:00 -- 做个例子上来 |
||||
-- 作者:wealthwind -- 发布时间:2014/4/15 10:20:00 -- 也就是说,目标值和销售值,用柱状;达成率用线状,然后按月列出来 |
||||
-- 作者:wealthwind -- 发布时间:2014/4/15 10:21:00 -- 例子很大,我尝试过几次上传都失败了~ 能否在我上面的代码上,帮助我改一下,谢谢老师。 |
||||
-- 作者:Bin -- 发布时间:2014/4/15 11:50:00 -- 纸上不谈兵 上传图片和文件参考这里http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=78 请尽量使用IE,谷歌,火狐等主流浏览器上传. 使用谷歌浏览器必须要先输入一个以上的字符 上传后需要等文件代码出现才算成功! |
||||
-- 作者:wealthwind -- 发布时间:2014/4/15 11:59:00 -- 以上是含“目标”和“订单”表的项目;
|
||||
-- 作者:wealthwind -- 发布时间:2014/4/15 12:04:00 -- 临时统计表我已经能做出来了,就是要生成类似上面EXCEL做的图表 红色代表目标、蓝色代表实际销量、线代表达成率;要生出这样的图例 |
||||
-- 作者:wealthwind -- 发布时间:2014/4/15 12:06:00 -- 临时统计表我已经能做出来了,就是要生成类似上面EXCEL做的图表
红色代表目标、蓝色代表实际销量、线代表达成率;要生出这样的图例 此主题相关图片如下:360截图20140415120510468.jpg |
||||
-- 作者:有点甜 -- 发布时间:2014/4/15 14:59:00 -- 第一个问题,加入这段代码
For Each c As Col In Tables("统计").Cols |
||||
-- 作者:有点甜 -- 发布时间:2014/4/15 15:01:00 -- 你说的合计项,是求和,还是求平均值? |