Today I am going to show you how to chart control in C# using MS Access Database
Your database is shown below:
Now create a new project.

Select chart

View Top 5 Record

  1. private void chartcon1()
  2. {
  3. if (connectiondb.State == ConnectionState.Closed)
  4. {
  5. connectiondb.Open();
  6. }
  7. str3 = "select top 5 SName,mark from tbl_result";
  8. com3 = new OleDbCommand(str3, connectiondb);
  9. OleDbDataAdapter da = new OleDbDataAdapter(com3);
  10. DataTable dt = new DataTable();
  11. da.Fill(dt);
  12. connectiondb.Close();
  13. string[] N = new string[dt.Rows.Count];
  14. int[] M = new int[dt.Rows.Count];
  15. for (int i = 0; i < dt.Rows.Count; i++)
  16. {
  17. N[i] = dt.Rows[i][0].ToString();
  18. M[i] = Convert.ToInt32(dt.Rows[i][1]);
  19. }
  20. chart1.Series[0].Points.DataBindXY(N, M);
  21. }
View chart By Id
  1. private void chart_by_id()
  2. {
  3. if (connectiondb.State == ConnectionState.Closed)
  4. {
  5. connectiondb.Open();
  6. }
  7. str3 = "select Exam_date,mark from tbl_result where S_id='" + textBox5.Text.Trim() + "'";
  8. com3 = new OleDbCommand(str3, connectiondb);
  9. OleDbDataAdapter da = new OleDbDataAdapter(com3);
  10. DataTable dt = new DataTable();
  11. da.Fill(dt);
  12. connectiondb.Close();
  13. string[] N = new string[dt.Rows.Count];
  14. int[] M = new int[dt.Rows.Count];
  15. for (int i = 0; i < dt.Rows.Count; i++)
  16. {
  17. N[i] = dt.Rows[i][0].ToString();
  18. M[i] = Convert.ToInt32(dt.Rows[i][1]);
  19. }
  20. chart1.Series[0].Points.DataBindXY(N, M);
  21. }

And View Chart By Date change Event

  1. private void result_by_date()
  2. {
  3. if (connectiondb.State == ConnectionState.Closed)
  4. {
  5. connectiondb.Open();
  6. }
  7. str3 = "select SName,mark from tbl_result where Exam_date='" + dateTimePicker2.Text.Trim() + "'";
  8. com3 = new OleDbCommand(str3, connectiondb);
  9. OleDbDataAdapter da = new OleDbDataAdapter(com3);
  10. DataTable dt = new DataTable();
  11. da.Fill(dt);
  12. connectiondb.Close();
  13. string[] N = new string[dt.Rows.Count];
  14. int[] M = new int[dt.Rows.Count];
  15. for (int i = 0; i < dt.Rows.Count; i++)
  16. {
  17. N[i] = dt.Rows[i][0].ToString();
  18. M[i] = Convert.ToInt32(dt.Rows[i][1]);
  19. }
  20. chart1.Series[0].Points.DataBindXY(N, M);
  21. }

This is my simple attempt at understanding chart control. Full code is shown below.

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Data.OleDb;
  10. using System.Windows.Forms.DataVisualization.Charting;
  11. namespace Result_GRP
  12. {
  13. public partial class Form1: Form
  14. {
  15. OleDbConnection connectiondb = new OleDbConnection(@
  16. "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\DIPANKAR\Google Drive\resultDB.accdb");
  17. OleDbCommand com3;
  18. string str3;
  19. public Form1()
  20. {
  21. InitializeComponent();
  22. chartcon1();
  23. }
  24. private void Form1_Load(object sender, EventArgs e)
  25. {
  26. }
  27. private void chartcon1()
  28. {
  29. if (connectiondb.State == ConnectionState.Closed)
  30. {
  31. connectiondb.Open();
  32. }
  33. str3 = "select top 5 SName,mark from tbl_result";
  34. com3 = new OleDbCommand(str3, connectiondb);
  35. OleDbDataAdapter da = new OleDbDataAdapter(com3);
  36. DataTable dt = new DataTable();
  37. da.Fill(dt);
  38. connectiondb.Close();
  39. string[] N = new string[dt.Rows.Count];
  40. int[] M = new int[dt.Rows.Count];
  41. for (int i = 0; i < dt.Rows.Count; i++)
  42. {
  43. N[i] = dt.Rows[i][0].ToString();
  44. M[i] = Convert.ToInt32(dt.Rows[i][1]);
  45. }
  46. chart1.Series[0].Points.DataBindXY(N, M);
  47. }
  48. private void result_chart_by_date()
  49. {
  50. if (connectiondb.State == ConnectionState.Closed)
  51. {
  52. connectiondb.Open();
  53. }
  54. str3 = "select SName,mark from tbl_result where Exam_date='" + dateTimePicker2.Text.Trim() + "'";
  55. com3 = new OleDbCommand(str3, connectiondb);
  56. OleDbDataAdapter da = new OleDbDataAdapter(com3);
  57. DataTable dt = new DataTable();
  58. da.Fill(dt);
  59. connectiondb.Close();
  60. string[] N = new string[dt.Rows.Count];
  61. int[] M = new int[dt.Rows.Count];
  62. for (int i = 0; i < dt.Rows.Count; i++)
  63. {
  64. N[i] = dt.Rows[i][0].ToString();
  65. M[i] = Convert.ToInt32(dt.Rows[i][1]);
  66. }
  67. chart1.Series[0].Points.DataBindXY(N, M);
  68. }
  69. private void chart_by_id()
  70. {
  71. if (connectiondb.State == ConnectionState.Closed)
  72. {
  73. connectiondb.Open();
  74. }
  75. str3 = "select Exam_date,mark from tbl_result where S_id='" + textBox5.Text.Trim() + "'";
  76. com3 = new OleDbCommand(str3, connectiondb);
  77. OleDbDataAdapter da = new OleDbDataAdapter(com3);
  78. DataTable dt = new DataTable();
  79. da.Fill(dt);
  80. connectiondb.Close();
  81. string[] N = new string[dt.Rows.Count];
  82. int[] M = new int[dt.Rows.Count];
  83. for (int i = 0; i < dt.Rows.Count; i++)
  84. {
  85. N[i] = dt.Rows[i][0].ToString();
  86. M[i] = Convert.ToInt32(dt.Rows[i][1]);
  87. }
  88. chart1.Series[0].Points.DataBindXY(N, M);
  89. }
  90. private void textBox5_TextChanged(object sender, EventArgs e)
  91. {
  92. chart_by_id();
  93. }
  94. private void button1_Click(object sender, EventArgs e)
  95. {
  96. }
  97. private void button2_Click(object sender, EventArgs e)
  98. {
  99. }
  100. private void textBox1_TextChanged(object sender, EventArgs e)
  101. {
  102. }
  103. private void dateTimePicker2_ValueChanged_1(object sender, EventArgs e)
  104. {
  105. result_chart_by_date();
  106. }
  107. }
  108. }
Thanks