Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用C,SQL绘制(X,Y)条形图_C#_Sql_Sql Server_Graph_Mschart - Fatal编程技术网

C# 用C,SQL绘制(X,Y)条形图

C# 用C,SQL绘制(X,Y)条形图,c#,sql,sql-server,graph,mschart,C#,Sql,Sql Server,Graph,Mschart,我试图绘制一个Xweeks,YFuel Amount图,显示每个给定间隔(比如周)消耗的燃油总量,但目前该图仅显示DayX的燃油量。我怎样才能最好地绘制它来显示每周消耗的所有燃油量。下面是绘制当前图表的代码` private void Load_BTN_Click(object sender, EventArgs e) { try { string selectQuery = "Select * f

我试图绘制一个Xweeks,YFuel Amount图,显示每个给定间隔(比如周)消耗的燃油总量,但目前该图仅显示DayX的燃油量。我怎样才能最好地绘制它来显示每周消耗的所有燃油量。下面是绘制当前图表的代码`

         private void Load_BTN_Click(object sender, EventArgs e)
    {


           try
         {

             string selectQuery = "Select * from  Fuel_Attendend";
             cmd = new SqlCommand(selectQuery, connection);
        try
        {
            connection.Open();
            dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                this.chart1.Series["Date"].Points.AddXY(dr.GetString(3), dr.GetInt32(6));

            }

        }
        catch(Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

            connection.Close();
         }
         catch (Exception ex)
         {
             MessageBox.Show(ex.Message);
         }
    }

`。这是SQL表。

如果要显示每周的金额,最简单的方法是将SQL更改为“按周分组”。类似于

select sum(Fuel_Amount), DATEDIFF(week, '2018-01-01', Date) AS WeekNumber from Fuel_Attended group by DATEDIFF(week, '2018-01-01', Date)
在向系列1中添加点时,必须更改用作第一列和第二列的列

this.chart1.Series["Date"].Points.AddXY(dr.Int32(0), dr.GetInt32(1));
或者你可以使用

select sum(Fuel_Amount), DATEADD(week, DATEDIFF(week, '1950-01-01', Date), '1950-01-01') AS WeekNumber from Fuel_Attended group by DATEADD(week, DATEDIFF(week, '1950-01-01', Date), '1950-01-01')

这会将一周表示为一周开始的星期日。不仅仅是一个数字。

我不确定您缺少了什么,但我看到一件事:您将y值添加为字符串,这几乎总是一个错误,尽管这是一个常见的错误。在这里,当他们是日期是肯定是错误的除此之外:可能您想为总和添加一个系列?或者您只是想将sql更改为类似“选择日期”、“按日期分组”之类的内容?如果您想按周分组金额,您必须。。。鼓轮。。。每周分组。更改您的select,使其具有select SUMFOOLEAMOUNT、DATEDIFFweek、'2011-05-30',日期为Fuel_参加小组的周数WeekNumber@TaW你能解释更多吗..谢谢你指的是哪一部分?@Agapwlesu谢谢我这么做了,但是我现在得到的指定演员阵容无效。错误,因此无法加载图形。我在SQLSERVER中使用“date”数据类型表示日期,使用“int”数据类型表示燃料量。。this.chart1.Series[Date].Points.AddXYdr.GetDateTime0,dr.GetInt321;在原始代码中,您使用GetString作为日期时间列。这是有效的——尽管它没有提供所需的数据,但它提供了该日期列的值。在我的回答中,最后一个select生成了一个datetime值,因此使用GetString而不是GetDateTime可能会起作用。我会尝试这样做,或者更好的是,逐步检查您的代码,看看它在哪里失败,是什么对象被强制转换到错误的对象,以及给出异常的代码所期望的是什么。然后调整代码。好的,让我尝试使用GETSTRING,我会给你反馈。