MS Chart - 如何在一张图表上叠加2年的数据

时间:2015-10-28 13:42:16

标签: vb.net winforms mschart

在winforms应用程序中使用VB.net我创建了2015年的财务数据图表,其中包括与年内未结清单相关的4个系列。这一切都很好,如图所示:

enter image description here

现在,用户希望将2014年的相同数据覆盖在同一图表上,以便他可以将今年与上一年的数据进行比较。

我尝试了以下内容:

1)添加带有2014年数据的第二个数据源,这似乎不是一个去

2)我曾经使用过2015年的单一数据源。 2014年数据和过滤每个组系列的数据源,没有运气。

这是我的代码:

     chtAR.DataSource = Nothing
    chtAR.Series.Clear()
    chtAR.DataSource = DS2.Tables(CurrentYear)
    chtAR.ChartAreas(0).AxisX.Interval = 2
    chtAR.ChartAreas(0).AxisY.Interval = 250000
    chtAR.ChartAreas(0).AxisX.Maximum = 52

    '*** Current Year ***

    chtAR.Series.Add("AvgAR$")
    chtAR.Series("AvgAR$").LegendText = CurrentYear + " Avg A/R $"
    chtAR.Series("AvgAR$").ChartType = DataVisualization.Charting.SeriesChartType.Line
    chtAR.Series("AvgAR$").BorderWidth = 3
    chtAR.Series("AvgAR$").Color = Color.Green
    chtAR.Series("AvgAR$").XValueMember = DS2.Tables(CurrentYear).Columns("WeekNo").ToString
    chtAR.Series("AvgAR$").YValueMembers = DS2.Tables(CurrentYear).Columns("AVG A/R").ToString

    chtAR.Series.Add("AvgAR$PastDue")
    chtAR.Series("AvgAR$PastDue").LegendText = CurrentYear + " Avg A/R Past Due $"
    chtAR.Series("AvgAR$PastDue").ChartType = DataVisualization.Charting.SeriesChartType.Line
    chtAR.Series("AvgAR$PastDue").BorderWidth = 3
    chtAR.Series("AvgAR$PastDue").Color = Color.DarkBlue
    chtAR.Series("AvgAR$PastDue").XValueMember = DS2.Tables(CurrentYear).Columns("WeekNo").ToString
    chtAR.Series("AvgAR$PastDue").YValueMembers = DS2.Tables(CurrentYear).Columns("AVG Past Due A/R").ToString

    chtAR.Series.Add("TotalAR$")
    chtAR.Series("TotalAR$").LegendText = CurrentYear + " total A/R $"
    chtAR.Series("TotalAR$").ChartType = DataVisualization.Charting.SeriesChartType.Line
    chtAR.Series("TotalAR$").BorderWidth = 3
    chtAR.Series("TotalAR$").Color = Color.LightGreen
    chtAR.Series("TotalAR$").XValueMember = DS2.Tables(CurrentYear).Columns("WeekNo").ToString
    chtAR.Series("TotalAR$").YValueMembers = DS2.Tables(CurrentYear).Columns("CurrentAR").ToString

    chtAR.Series.Add("PastDueAR$")
    chtAR.Series("PastDueAR$").LegendText = CurrentYear + " Past Due A/R $"
    chtAR.Series("PastDueAR$").ChartType = DataVisualization.Charting.SeriesChartType.Line
    chtAR.Series("PastDueAR$").BorderWidth = 3
    chtAR.Series("PastDueAR$").Color = Color.LightBlue
    chtAR.Series("PastDueAR$").XValueMember = DS2.Tables(CurrentYear).Columns("WeekNo").ToString
    chtAR.Series("PastDueAR$").YValueMembers = DS2.Tables(CurrentYear).Columns("PastDueAR").ToString

有没有人对如何处理这个问题有一些建议?

像Telerik这样的东西会是一个不错的选择吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

如果有人有兴趣,我想出来了。

我的解决方案是更改从查询返回的数据布局。

数据库表看起来像这样:

日期| WeekNo | CurrentA / R | PastDueAR |等.... |

我写了一个丑陋的查询(带有几个子查询),返回了一个像这样的表:

WeekNo | PastYearCurrentA / R | CurrentYearA / R | PastYearPastDueA / R | CurrentYearPastDueA / R |等等......

这允许我拥有一个包含我需要的所有系列信息的数据源。

新版本如下:

enter image description here