图表生成多周的每日动态金额

时间:2013-01-18 14:47:49

标签: c# winforms visual-studio-2010

我想创建一个可以从2个给定日期,开始日期和结束日期生成的图表。 我在msdn上研究了图表控件一段时间,然后想出了一个开始。但是我碰到了一些问题。

它是一个图表,表示每周每天的事情数,可能是数周。 y轴表示数量,x轴表示周数。

所以这个系列是星期几,星期一到星期日。 还有一个例子来完成解释,让你知道我的意思: 开课日期:1-1-2013 截止日期:2013年1月18日

将从数据库获取信息,每行返回一个日期。 拆分日期以使用DateTime获取日期名称。

让我们说1-1-2013的金额是26,所以我们得到了26行,日期为1-1-2013。 我们使用DateTime查看星期二,然后它应该放在星期二的星期图表中。这对于每天和新的一周开始时,它不得在第一个星期二但在本周的星期二加入。

这是我目前拥有的代码(测试结果)

        string ksubConnectionString = @"Data Source=xx.xx.x.x\xxxxxx;Initial Catalog=xxxxxxxxxxxx;
        User ID=xxxxxxx;Password=xxxxxxxxxxxx;";
        SqlConnection connection = new SqlConnection(ksubConnectionString);
        SqlCommand cmd = connection.CreateCommand();
        connection.Open();

        // Query for data graph
        cmd.CommandText = "SELECT closedDateTime FROM kasadmin.SDIncident WHERE closedDateTime < '" + textBox2.Text + " 23:59:59.000' AND closedDateTime > '" + textBox1.Text + " 00:00:00.001' ORDER BY closedDateTime ASC";
        richTextBox1.Text = "";
        SqlDataReader rdr = cmd.ExecuteReader();
        if (rdr.HasRows)
        {
            List<string> ArrayDates = new List<string>();

            for (int i = 0; rdr.Read(); i++)
            {
                ArrayDates.Add(rdr.GetDateTime(0).ToString());
            }
            string[] SplittedDate;
            string[] DatetimeSplit;
            int Jaar;
            int Maand;
            int Dag;
            for (int k = 0; k <ArrayDates.Count;k++ )
            {
                SplittedDate = ArrayDates[k].Split(' ');
                DatetimeSplit = SplittedDate[0].Split('-');
                Jaar = Convert.ToInt32(DatetimeSplit[2].ToString());
                Maand = Convert.ToInt32(DatetimeSplit[1].ToString());
                Dag = Convert.ToInt32(DatetimeSplit[0].ToString());
                DateTime dt = new DateTime(Jaar, Maand, Dag);

                if (dt.DayOfWeek.ToString() == "Monday")
                {
                    this.chart1.Series[0].Points.AddY(1);
                }
                if (dt.DayOfWeek.ToString() == "Tuesday")
                {
                    this.chart1.Series[1].Points.AddY(1);
                }
                if (dt.DayOfWeek.ToString() == "Wednesday")
                {
                    this.chart1.Series[2].Points.AddY(1);
                }
            }
        }
        else
        {
            richTextBox1.Text = "No rows found.";
        }

        rdr.Close();
        connection.Close();

0 个答案:

没有答案