開始日と終了日の 2 つの日付から生成できるグラフを作成したいと考えています。msdn でチャート コントロールについてしばらく調べたところ、思いつきました。しかし、私はいくつかの問題にぶつかっています。
その週の各日、可能な複数の週の数を表すグラフ。Y 軸は金額を表し、X 軸は週番号を表します。
したがって、シリーズは月曜日から日曜日までの曜日です。説明の最後に、私の言いたいことを理解してもらうための小さな例を示します。開始日: 2013 年 1 月 1 日 終了日: 2013 年 1 月 18 日
DB から情報を取得し、行ごとに日付を返します。日付を分割して、DateTime で曜日名を取得します。
2013 年 1 月 1 日の金額が 26 だったとすると、2013 年 1 月 1 日の日付で 26 行が得られます。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();