图表无法正确显示数据

问题描述

我对MS Chart控件有一个非常奇怪的问题。我想要做的是随时间显示几个数据值,但是我得到了一些非常奇怪的结果...

例如:我有一个数据库(Access),其中包含如下表:

  • 用户(ID,名称...)
  • RECEIPTS(ID,收据编号,金额,收据日期,收件人ID,用户ID)
  • 收件人(ID,收件人姓名)

我想显示(最好在线形图上)每个接收者的支出金额(即:接收者就像SevenEleven,Elector,McDonald's等),因此X轴代表收据的“日期”部分,Y轴将是值(金额),而LINE显然将代表接收者。因此,如果有60张ex.ex收据。七个不同的收件人,以及他们的约会日期,我该如何处理?

我尝试使用此sql将数据拉入数据表

SELECT 
    Recipients.Recipient,SUM(Receipts.Amount) AS Skupaj,DateOf 
FROM 
    Receipts 
LEFT JOIN 
    Recipients ON Recipients.ID = Receipts.Recipient 
WHERE 
    Receipts.Recipient = 1 
GROUP BY 
    Recipients.Recipient,Receipts.Amount;

但是一切都搞砸了...然后我尝试遍历数据表并为每个收件人创建新系列-无济于事

Series series;

string legendData = "";

for (int i = 0; i < datatable.Rows.Count; i++)
{
    // get data for legend
    legendData = datatable.Rows [i].Field<string>(0) + ": " + datatable.Rows [i].Field<decimal>(1).ToString();

    series = new Series
             {
                // set legend value
                LegendText = legendData,//datatable.Rows [i].Field<string>(0) + " " + datatable.Rows [i].Field<decimal>(2).ToString(),// set X axis data
                XValueMember = "DateOf",// set Y axis data
                YValueMembers = "Skupaj",// set chart type
                ChartType = SeriesChartType.Line,// set a bit of colors for data charting
                Palette = ChartColorPalette.Excel,// is the value of data printed on chart line
                IsValueShownAsLabel = false,// is data visible in the legend
                IsVisibleInLegend = true,};

 chartData.Series.Add(series);

但无济于事...

此外,收件人的姓名也应出现在图例中,但没有出现,因此我不得不手动添加它。因此这行:

legendData = datatable.Rows [i].Field<string>(0) + ": " + datatable.Rows [i].Field<decimal>(1).ToString();

图表中显示的数据太混乱了,看起来像是毕加索制作的……

我想我做错了什么,甚至是从错误的角度看待了整个事情……

有人知道我在做什么错吗,或者(甚至更好!)为我提供一个样本(我敢肯定还有其他人)来看看并为我自己尝试一下?

致以最良好的祝愿! #stayHome和#beHealthy

开机自检新数据:

This is Column chart type

And this is spline chart type

注意图表上方突出显示的数据-应该进行汇总。还要注意X轴-它是每月间隔的...

这是此系列数据的实际sql字符串:

public static string TEST_BY_PREJEMNIKI =
                        "SELECT disTINCT Recipients.Recipient," +
                        "SUM(Receipts.Amount) AS Amount,Receipts.DateOf " +
                        "FROM Receipts LEFT JOIN Recipients ON Recipients.ID = " +
                        "Receipts.Recipient GROUP BY Recipients.Recipient,Receipts.Amount,Receipts.DateOf ORDER BY Receipts.DateOf;";

还有其中的代码部分...

            adapter.Fill(datatable);
        chartData.DataSource = datatable;
        connection.Close();

        #endregion DATABASE STUFF

        #region PLottING CHART DATA

        chartData.Series [0].XValueMember = "DateOf";
        chartData.Series [0].YValueMembers = "Amount";
        chartData.Series [0].IsVisibleInLegend = true;
        chartData.Series [0].ChartType = SeriesChartType.Spline;
        chartData.Series [0].Palette = ChartColorPalette.BrightPastel;

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)