//обновление данных private void toolStripButton2_Click(object sender, EventArgs e) { if (table.Rows.Count == 0) { return; } if (crow == null) { return; } predmet_edit pe = new predmet_edit(); pe.full_name.AutoCompleteCustomSource = acsc1; pe.krat_name.AutoCompleteCustomSource = acsc2; pe.Text = "Сведения о предмете: " + crow[1].ToString(); pe.pred_id = (int)crow[0]; pe.full_name.Text = crow[1].ToString(); pe.krat_name.Text = crow[2].ToString(); pe.grup_id = (int)crow[4]; pe.prepod_id = (int)crow[9]; pe.kaf_id = (int)crow[8]; pe.kurs_id = (int)crow[6]; pe.semestr_id = (int)crow[7]; pe.semestr.Value = pe.semestr_id; pe.semestr.Maximum = pe.kurs_id * 2; pe.semestr.Minimum = pe.kurs_id * 2 - 1; pe.delenie = (bool)crow[12]; pe.delenie_list.SelectedIndex = (!pe.delenie) ? 0 : 1; pe.type_id = (int)crow[14]; pe.checkBox1.Checked = (bool)crow[10]; pe.fakultet_id = (int)crow[13]; pe.edit = true; int kred = Convert.ToInt32(crow[16]); if (kred == 0) { kred = 1; } pe.KreditUpDown.Value = kred; DialogResult pe_res = pe.ShowDialog(); if (pe_res != DialogResult.OK) { return; } //1. обновить запись в таблице predmet string q = "update predmet set " + " prepod_id = @PRID, " + " name = @NAME, " + " fakultet_id = @FID, " + " kurs_id = @KID, " + " grupa_id = @GID, " + " semestr = @SID, " + " name_krat = @NK, " + " kafedra_id = @KFID, " + " actual = @ACT, " + " delenie = @DEL, " + " type_id = @TYPE, " + " kredit = @KRED " + " where id = @ID"; SqlCommand cmd = new SqlCommand(q, main.global_connection); cmd.Parameters.Add("@PRID", SqlDbType.Int).Value = pe.prepod_id; cmd.Parameters.Add("@NAME", SqlDbType.NVarChar).Value = pe.full_name.Text; cmd.Parameters.Add("@FID", SqlDbType.Int).Value = pe.fakultet_id; cmd.Parameters.Add("@KID", SqlDbType.Int).Value = pe.kurs_id; cmd.Parameters.Add("@GID", SqlDbType.Int).Value = pe.grup_id; cmd.Parameters.Add("@SID", SqlDbType.Int).Value = pe.semestr.Value; cmd.Parameters.Add("@NK", SqlDbType.NVarChar).Value = pe.krat_name.Text; cmd.Parameters.Add("@KFID", SqlDbType.Int).Value = pe.kaf_id; cmd.Parameters.Add("@ACT", SqlDbType.Bit).Value = pe.checkBox1.Checked; cmd.Parameters.Add("@DEL", SqlDbType.Bit).Value = pe.delenie; cmd.Parameters.Add("@TYPE", SqlDbType.Int).Value = pe.type_id; cmd.Parameters.Add("@KRED", SqlDbType.Int).Value = pe.KreditUpDown.Value; cmd.Parameters.Add("@ID", SqlDbType.Int).Value = pe.pred_id; try { cmd.ExecuteNonQuery(); } catch (Exception exx) { MessageBox.Show("Ошибка записи данных. Повторите операцию позднее.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //2. удалить все записи о предмете из таблицы vidzan_predmet q = "delete from vidzan_predmet where predmet_id = @ID"; cmd = new SqlCommand(q, main.global_connection); cmd.Parameters.Add("@ID", SqlDbType.Int).Value = pe.pred_id; try { cmd.ExecuteNonQuery(); } catch (Exception exx) { MessageBox.Show("Ошибка записи данных. Повторите операцию позднее.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //3. добавить записи в таблицу vidzan_predmet foreach (ListViewItem lv in pe.vid_view.Items) { int vid = Convert.ToInt32(lv.Tag); double ch = Convert.ToDouble(lv.SubItems[1].Text); q = "insert into vidzan_predmet (vidzan_id, predmet_id, kol_chas) " + " values (" + " @VID, @PID, @KOL )"; cmd = new SqlCommand(q, main.global_connection); cmd.Parameters.Add("@PID", SqlDbType.Int).Value = pe.pred_id; cmd.Parameters.Add("@VID", SqlDbType.Int).Value = vid; cmd.Parameters.Add("@KOL", SqlDbType.Float).Value = ch; try { cmd.ExecuteNonQuery(); } catch (Exception exx) { MessageBox.Show("Ошибка записи данных. Повторите операцию позднее.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } fill_table(); }
//добабвление нового предмета private void toolStripButton1_Click(object sender, EventArgs e) { predmet_edit pe = new predmet_edit(); pe.kaf_id = (int)kaf_set.Rows[kaf_list.SelectedIndex][0]; pe.full_name.AutoCompleteCustomSource = acsc1; pe.krat_name.AutoCompleteCustomSource = acsc2; pe.grup_id = (int)kaf_set.Rows[kaf_list.SelectedIndex][0]; pe.kurs_id = Convert.ToInt32(kaf_set.Rows[kaf_list.SelectedIndex][2]); pe.KreditUpDown.Value = 1; pe.edit = false; DialogResult pe_res = pe.ShowDialog(); if (pe_res != DialogResult.OK) { return; } /*2+ - 33,3 * 3 от 50%, * 4 - 67,7 * 5 - 83,3 */ //1. добавить запись в таблицу predmet и получить id string q = "insert into predmet (" + " prepod_id,name, fakultet_id, kurs_id, grupa_id," + " semestr, name_krat, kafedra_id, actual, delenie, type_id, kredit ) " + " values ( " + " @PRID, " + " @NAME, " + " @FID, " + " @KID, " + " @GID, " + " @SID, " + " @NK, " + " @KFID, " + " @ACT, " + " @DEL, " + " @TYPE, " + " @KREDIT)"; SqlCommand cmd = new SqlCommand(q, main.global_connection); cmd.Parameters.Add("@PRID", SqlDbType.Int).Value = pe.prepod_id; cmd.Parameters.Add("@NAME", SqlDbType.NVarChar).Value = pe.full_name.Text; cmd.Parameters.Add("@FID", SqlDbType.Int).Value = pe.fakultet_id; cmd.Parameters.Add("@KID", SqlDbType.Int).Value = pe.kurs_id; cmd.Parameters.Add("@GID", SqlDbType.Int).Value = pe.grup_id; cmd.Parameters.Add("@SID", SqlDbType.Int).Value = pe.semestr.Value; cmd.Parameters.Add("@NK", SqlDbType.NVarChar).Value = pe.krat_name.Text; cmd.Parameters.Add("@KFID", SqlDbType.Int).Value = pe.kaf_id; cmd.Parameters.Add("@ACT", SqlDbType.Bit).Value = pe.checkBox1.Checked; cmd.Parameters.Add("@DEL", SqlDbType.Bit).Value = pe.delenie; cmd.Parameters.Add("@TYPE", SqlDbType.Int).Value = pe.type_id; cmd.Parameters.Add("@KREDIT", SqlDbType.Int).Value = pe.KreditUpDown.Value; try { cmd.ExecuteNonQuery(); } catch (Exception exx) { MessageBox.Show("Ошибка записи данных. Повторите операцию позднее.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //получить ID новой записи cmd = new SqlCommand("select @@identity", main.global_connection); int newid = 0; try { newid = Convert.ToInt32(cmd.ExecuteScalar()); } catch (Exception exx) { MessageBox.Show("Ошибка записи данных. Повторите операцию позднее.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //2. удалить все записи о предмете из таблицы vidzan_predmet q = "delete from vidzan_predmet where predmet_id = @ID"; cmd = new SqlCommand(q, main.global_connection); cmd.Parameters.Add("@ID", SqlDbType.Int).Value = newid; try { cmd.ExecuteNonQuery(); } catch (Exception exx) { MessageBox.Show("Ошибка записи данных. Повторите операцию позднее.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //3. добавить записи в таблицу vidzan_predmet foreach (ListViewItem lv in pe.vid_view.Items) { int vid = Convert.ToInt32(lv.Tag); double ch = Convert.ToDouble(lv.SubItems[1].Text); q = "insert into vidzan_predmet (vidzan_id, predmet_id, kol_chas) " + " values (" + " @VID, @PID, @KOL )"; cmd = new SqlCommand(q, main.global_connection); cmd.Parameters.Add("@PID", SqlDbType.Int).Value = newid; cmd.Parameters.Add("@VID", SqlDbType.Int).Value = vid; cmd.Parameters.Add("@KOL", SqlDbType.Float).Value = ch; try { cmd.ExecuteNonQuery(); } catch (Exception exx) { MessageBox.Show("Ошибка записи данных. Повторите операцию позднее.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } fill_table(); }