ss.MainSel(dataGridView1, zaput1);
ss.VisiF(dataGridView1, 1);
Запуск форми на якій відображається успішність вибраного учня з переданням параметрів для його вибору:
uchen fo3 = new uchen(dataGridView1.CurrentRow.Cells[0].Value.ToString(),"ІДЗ");
fo3.Show();
Запуск форми редагування з передачею відомостей про те який клас потрібно відкрити:
edit ed = new edit(strkl);
ed.Show();
Рисунок 3.2 – Форма головної сторінки.
Блок інізіалізації форми що відображає інформацію про учня з прийомом даних які передаються з іншої форми:
public uchen(string idUhc,string tup)
{
fkUch = idUhc;
zaput1 = "SELECT idz.ocinka AS [Оцінка], idznazva.nazva AS [Назва ІДЗ], predmetu.nazva AS [Предмет] FROM (((predmetu INNER JOIN idz ON predmetu.fkpredm = idz.idzfkpre) INNER JOIN((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) ON idz.idzfksem = semestru.fksem) INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) WHERE (uchni.fkuchni = " + fkUch + ")";
InitializeComponent();
}
Процедура події яка відповідає за завантаження форми з блоком заповнення даними учня таблиці DataGridViev:
private void Form3_Load(object sender, EventArgs e)
{
zhusl.MainSel(dataGridView1, zaput1);
connection.Open();
OleDbCommand thisCommandp = new OleDbCommand("SELECT uchni.prizv FROM (uchni INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) WHERE (uchni.fkuchni = " + fkUch + ")", connection);
OleDbDataReader thisReader = thisCommandp.ExecuteReader();
thisReader.ToString();
thisReader.Read();
ipp.Text += thisReader[0].ToString()+" ";
thisCommandp = new OleDbCommand("SELECT uchni.imya FROM (uchni INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) WHERE (uchni.fkuchni = " + fkUch + ")", connection);
thisReader = thisCommandp.ExecuteReader();
thisReader.ToString();
thisReader.Read();
ipp.Text += thisReader[0].ToString() + " ";
thisCommandp = new OleDbCommand("SELECT uchni.pobat FROM (uchni INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) WHERE (uchni.fkuchni = " + fkUch + ")", connection);
thisReader = thisCommandp.ExecuteReader();
thisReader.ToString();
thisReader.Read();
ipp.Text += thisReader[0].ToString() + " ";
thisReader.Close();
connection.Close();
}
Рисунок 3.3 – Форма яка відображає успішність вибраного учня.
Прийом даних які передає головна форма – формі редагування:
public edit(string klos)
{
strkl = klos;
InitializeComponent();
}
Зміні необхідні для вибірки даних:
public static string strkl = "klasu.klas", strpredm = "predmetu.nazva", stridznazva = "idznazva.nazva";
Заповнення усіх об’єктів на формі даними:
zhusl.combSel(combklasu, "SELECT klas, fkklasu, rikpost FROM klasu ORDER BY rikpost", false);
zhusl.combSel(combpredm, "SELECT nazva FROM predmetu ORDER BY nazva", true);
zhusl.combSel(combidz, "SELECT nazva FROM idznazva ORDER BY nazva", true);
combpredm.SelectedIndex = 0;
//combklasu.SelectedIndex = 11;
// combimya.SelectedIndex = 0;
//FormLoad
zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ") ORDER BY uchni.prizv");
zhusl.VisiF(dataGridView1, 5);
Вибірка за предметами:
if (combpredm.SelectedItem.ToString() == "*") strpredm = "predmetu.nazva";
else strpredm = "'" + combpredm.SelectedItem.ToString() + "'";
zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ") ORDER BY uchni.prizv");
zhusl.VisiF(dataGridView1, 5);
Вибірка за класами:
if (combklasu.SelectedItem.ToString() == "*") strkl = "klasu.klas"; else
strkl = "'" +combklasu.SelectedItem.ToString()+"'";
zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ") ORDER BY uchni.prizv");
zhusl.VisiF(dataGridView1, 5);
Вибірка за назвою оцінки:
if (combidz.SelectedItem.ToString() == "*") stridznazva = "idznazva.nazva";
else
stridznazva = "'" + combidz.SelectedItem.ToString() + "'";
zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ") ORDER BY uchni.prizv");
zhusl.VisiF(dataGridView1, 5);
Функція яка дістає ключове поле таблиці за назвою інших полів:
string getFK(string stre)
{
string tem = "";
OleDbCommand thisCommand = new OleDbCommand(stre, connection);
OleDbDataReader thisReader = thisCommand.ExecuteReader();
thisReader.ToString();
thisReader.Read();
tem = thisReader[0].ToString();
thisReader.Close();
return tem;
}
Динамічна зміна предмету та назви оцінки:
switch (dataGridView1.CurrentCell.ColumnIndex)
{
case 10:
zhusl.combSel(combfrog, "SELECT nazva FROM idznazva ORDER BY nazva;",false);
panel1.Visible = true;
panel1.Top = e.Y + dataGridView1.Top;
panel1.Left = e.X + dataGridView1.Left;
break;
case 12:
zhusl.combSel(combfrog, "SELECT nazva FROM predmetu ORDER BY nazva;",false);
panel1.Visible = true;
panel1.Top = e.Y + dataGridView1.Top;
panel1.Left = e.X + dataGridView1.Left
break;
default:
break;}
Процедура динамічної зміни:
private void combfrog_SelectedIndexChanged(object sender, EventArgs e)
{
connection.Open();
OleDbCommand thisCommand = new OleDbCommand();
thisCommand.Connection = connection;
thisCommand.CommandText = "SELECT nazva FROM idznazva ORDER BY nazva;";
OleDbDataReader thisReader = thisCommand.ExecuteReader();
thisReader.Close();
switch (dataGridView1.CurrentCell.ColumnIndex)
{
case 10:
thisCommand.CommandText = "UPDATE idz SET nazva = ? WHERE (fkidz= ?);";
thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = getFK("SELECT fkidznazva FROM idznazva WHERE (nazva = '" + combfrog.SelectedItem.ToString() + "');");
thisCommand.Parameters.Add("@fkidz", OleDbType.VarChar).Value = dataGridView1.CurrentRow.Cells[0].Value.ToString();
thisReader = thisCommand.ExecuteReader();
thisReader.ToString();
thisReader.Close();
break;
case 12:
thisCommand.CommandText = "UPDATE idz SET idzfkpre = ? WHERE (fkidz= ?);";
thisCommand.Parameters.Add("@idzfkpre", OleDbType.VarChar).Value = getFK("SELECT fkpredm FROM predmetu WHERE (nazva = '" + combfrog.SelectedItem.ToString() + "');");
thisCommand.Parameters.Add("@fkidz", OleDbType.VarChar).Value = dataGridView1.CurrentRow.Cells[0].Value.ToString();
thisReader = thisCommand.ExecuteReader();
thisReader.ToString();
thisReader.Close();
break;
default:
break;
}
panel1.Visible = false;
connection.Close();
zhusl.MainSel(dataGridView1, "SELECT idz.fkidz AS [FKIDZ], idz.idzfksem AS [FKSEMIDZ], idz.idzfkpre, idz.nazva AS idznazva, klasu.fkklasu, uchni.fkuchni, klasu.klas AS [Клас], uchni.prizv AS [Прізвище], uchni.imya AS [Ім'я], uchni.pobat AS [Побатькові], idznazva.nazva AS [Назва ІДЗ], idz.ocinka AS [Оцінка], predmetu.nazva AS [Предмет] FROM (predmetu INNER JOIN (((uchni INNER JOIN semestru ON uchni.fkuchni = semestru.semfkuchen) INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) INNER JOIN(idz INNER JOIN idznazva ON idz.nazva = idznazva.fkidznazva) ON semestru.fksem = idz.idzfksem) ON predmetu.fkpredm = idz.idzfkpre) WHERE (klasu.klas = " + strkl + " AND predmetu.nazva = " + strpredm + " AND idznazva.nazva = " + stridznazva + ")");
zhusl.VisiF(dataGridView1, 5);
}
Процедура створення нової оцінки для динамічної процедури:
private void addbutton_Click(object sender, EventArgs e)
{
//panel1.Height = 70;
MessageBox.Show(combfrog.Text);
connection.Open();
OleDbCommand thisCommand = new OleDbCommand();
thisCommand.Connection = connection;
thisCommand.CommandText = "SELECT nazva FROM idznazva ORDER BY nazva;";
OleDbDataReader thisReader = thisCommand.ExecuteReader();
thisReader.Close();
switch (dataGridView1.CurrentCell.ColumnIndex)
{
case 10:
thisCommand.CommandText = "INSERT INTO idznazva (nazva) VALUES(@Nazva);";
thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = combfrog.Text;
thisReader = thisCommand.ExecuteReader();
thisReader.ToString();
thisReader.Close();
connection.Close();
zhusl.combSel(combfrog, "SELECT nazva FROM idznazva ORDER BY nazva", false);
break;
case 12:
thisCommand.CommandText = "INSERT INTO predmetu (nazva) VALUES(@Nazva);";
thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = combfrog.Text;
thisReader = thisCommand.ExecuteReader();
thisReader.ToString();
thisReader.Close();
connection.Close();
zhusl.combSel(combfrog, "SELECT nazva FROM idznazva ORDER BY nazva", false);
break;
default:
break;
}
}
Блок відкриття, закриття панелі для додавання нової оцінки:
if (panel2.Visible) panel2.Visible = false; else
panel2.Visible = true;
Додання нової оцінки:
OleDbCommand thisCommanduch = new OleDbCommand("SELECT uchni.fkuchni FROM (uchni INNER JOIN klasu ON uchni.fkklasu = klasu.fkklasu) WHERE (klasu.klas = " + strkl + ")", connection);
OleDbCommand thisCommandsem = new OleDbCommand();
OleDbCommand thisCommand = new OleDbCommand();
OleDbCommand thisCommandi = new OleDbCommand();
connection.Open();
thisCommandi = new OleDbCommand("INSERT INTO idznazva (nazva) VALUES (@nazva)", connection);
thisCommandi.Parameters.Add("@nazva", OleDbType.VarChar).Value = textBox1.Text;
OleDbDataReader thisReaderuch2 = thisCommandi.ExecuteReader();
OleDbDataReader thisReaderuch = thisCommanduch.ExecuteReader();
string uch = "",uch2 = "";
bool kt = false;
thisReaderuch.ToString();
string stre = "",stre2 = "";
while (thisReaderuch.Read())
{
string rea = thisReaderuch[0].ToString();
thisCommandsem = new OleDbCommand("SELECT semestru.fksem FROM (semestru INNER JOIN uchni ON semestru.semfkuchen = uchni.fkuchni) WHERE (uchni.fkuchni = " + rea + ")", connection);
OleDbDataReader thisReadersem = thisCommandsem.ExecuteReader();
thisReadersem.ToString();
while (thisReadersem.Read())
{
if ((sem1.Checked) && (uch!=rea))
{
string reasem = thisReadersem[0].ToString();
thisCommand = new OleDbCommand("INSERT INTO idz (nazva, ocinka, idzfkpre, idzfksem) VALUES (@nazva, @ocinka, @idzfkpre, @idzfksem);", connection);
thisCommand.Parameters.Add("@nazva", OleDbType.VarChar).Value = getFK("SELECT fkidznazva FROM idznazva WHERE (nazva = '" + textBox1.Text + "')");
thisCommand.Parameters.Add("@ocinka", OleDbType.VarChar).Value = "0";
thisCommand.Parameters.Add("@idzfkpre", OleDbType.VarChar).Value = getFK("SELECT fkpredm FROM predmetu WHERE (nazva = " + strpredm + ")");
thisCommand.Parameters.Add("@idzfksem", OleDbType.VarChar).Value = reasem;
OleDbDataReader thisReader = thisCommand.ExecuteReader();
uch = rea;
kt = true;
}
else { kt = false; uch = rea; }
if ((sem2.Checked) && (uch == rea) && !kt)
{
kt = false;
}
else { }
}
}
connection.Close();
textBox1.Text = "";
panel2.Visible = false;
zhusl.combSel(combidz, "SELECT nazva FROM idznazva ORDER BY nazva", true);
Відкриття, закриття панелі для додання нового предмету:
if (panel3.Visible) panel3.Visible = false; else panel3.Visible = true;
Процедура виставлення оцінок із збереженням іх у базу даних:
void updOcinku()
{
connection.Open();
if (dataGridView1.CurrentRow.Cells[11].Value.ToString() == "") dataGridView1.CurrentRow.Cells[11].Value = "0";
OleDbCommand thisCommand = new OleDbCommand("UPDATE idz SET ocinka = ? WHERE (fkidz= ?);", connection);
thisCommand.Parameters.Add("@ocinka", OleDbType.VarChar).Value = dataGridView1.CurrentRow.Cells[11].Value.ToString();
thisCommand.Parameters.Add("@fkidz", OleDbType.VarChar).Value = dataGridView1.CurrentRow.Cells[0].Value.ToString();