private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { //добавить нового препода prepod_edit pe = new prepod_edit(); pe.pictureBox1.Image = main.GetPhotoFromBD("prepod", 69); pe.status_box.Checked = true; pe.first = false; pe.zavkaf_id = (int)kaf_set.Rows[kaf_list.SelectedIndex][3]; FilePhoto = DefaultPath; pe.pictureBox1.Image.Save(FilePhoto, System.Drawing.Imaging.ImageFormat.Jpeg); pe.FilePhoto = FilePhoto; DialogResult peres = pe.ShowDialog(); if (peres == DialogResult.Cancel) { return; } string famn = pe.fam.Text.Trim(); string imn = pe.im.Text.Trim(); string otn = pe.ot.Text.Trim(); int kafidn = pe.kaf_id; int dolzn = pe.dolz_id; int stepidn = pe.uch_id; int zvann = pe.zvan_id; bool actualn = pe.status_box.Checked; string addrn = pe.email.Text.Trim();; string phonen = pe.phone.Text.Trim(); bool sexn = pe.male.Checked; bool newzav = (pe.dolz_list.Text.ToLower().Trim().Contains("заведующий")); //фото сохраняется отдельно SqlCommand cmd = new SqlCommand(); cmd.Connection = main.global_connection; cmd.CommandText = "select prepod.actual, kafedra.name from prepod " + " join kafedra on prepod.kafedra_id = kafedra.id " + " where fam like @FAM and " + " im like @IM and " + " ot like @OT and " + " sex = @SEX "; cmd.Parameters.Add("@FAM", SqlDbType.NVarChar).Value = famn; cmd.Parameters.Add("@IM", SqlDbType.NVarChar).Value = imn; cmd.Parameters.Add("@OT", SqlDbType.NVarChar).Value = otn; cmd.Parameters.Add("@SEX", SqlDbType.Bit).Value = sexn; SqlDataAdapter sda = new SqlDataAdapter(cmd); DataTable oldprepods = new DataTable(); sda.Fill(oldprepods); string message = ""; if (oldprepods.Rows.Count > 0) { if (oldprepods.Rows.Count == 1) { message = "Обнаружен преподаватель с такой же фамилией, именем и отчеством:\n\n"; } else { message = "Обнаружены преподаватели с аналогичными фамилией, именем и отчеством:\n\n"; } int i = 1; foreach (DataRow dr in oldprepods.Rows) { string stat = ((bool)dr[0]) ? "работает" : "уволен(а)"; message += i.ToString() + ". " + famn + " " + imn + " " + otn + " [кафедра " + dr[1].ToString() + ", статус - " + stat + "];\n"; } message += "\n\nВыполнить сохранение введенной Вами информации?"; DialogResult dres = MessageBox.Show(message, "Выбор действия", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (dres == DialogResult.No) { return; } } //добавить новую запись в БД cmd = new SqlCommand(); cmd.Connection = main.global_connection; cmd.CommandText = "insert into prepod " + "( fam, im, ot, kafedra_id, dolznost_id, " + " stepen_id, zvanie_id, actual, address, phone, sex )" + " values " + "( @FAM, @IM, @OT, @KAFEDRA_ID, @DOLZNOST_ID, " + " @STEPEN_ID, @ZVANIE_ID, @ACTUAL, @ADDRESS, @PHONE, @SEX )"; cmd.Parameters.Add("@FAM", SqlDbType.NVarChar).Value = famn; cmd.Parameters.Add("@IM", SqlDbType.NVarChar).Value = imn; cmd.Parameters.Add("@OT", SqlDbType.NVarChar).Value = otn; cmd.Parameters.Add("@KAFEDRA_ID", SqlDbType.Int).Value = kafidn; cmd.Parameters.Add("@DOLZNOST_ID", SqlDbType.Int).Value = dolzn; cmd.Parameters.Add("@STEPEN_ID", SqlDbType.Int).Value = stepidn; cmd.Parameters.Add("@ZVANIE_ID", SqlDbType.Int).Value = zvann; cmd.Parameters.Add("@ACTUAL", SqlDbType.Bit).Value = actualn; cmd.Parameters.Add("@ADDRESS", SqlDbType.NVarChar).Value = addrn; cmd.Parameters.Add("@PHONE", SqlDbType.NVarChar).Value = phonen; cmd.Parameters.Add("@SEX", SqlDbType.Bit).Value = sexn; try { cmd.ExecuteNonQuery(); } catch (Exception exx) { MessageBox.Show("Неожиданный сбой при передаче данных. Повтоите операцию ввода еще раз.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } cmd = new SqlCommand("select @@Identity", main.global_connection); int prepidn = Convert.ToInt32(cmd.ExecuteScalar().ToString()); if (pe.deny_photo == false) { FilePhoto = pe.FilePhoto; } save_prepod_photo_by_id(prepidn); //сохранить данные нового зав каф if (newzav) { //дать запрос и поставить в поле завкаф нулевого препода cmd = new SqlCommand("update kafedra set zav_kaf_id=@ZAV where " + "id = " + kaf_set.Rows[kaf_list.SelectedIndex][0].ToString(), main.global_connection); cmd.Parameters.Add("@ZAV", SqlDbType.Int).Value = prepidn; cmd.ExecuteNonQuery(); int Sel = kaf_list.SelectedIndex; //загрузить кафедры, получить активную string selcom = "select id, name_krat, name, zav_kaf_id from kafedra " + "where actual=1 " + "order by priority"; main.global_adapter = new SqlDataAdapter(selcom, main.global_connection); kaf_set = new DataTable(); main.global_adapter.Fill(kaf_set); foreach (DataRow dr in kaf_set.Rows) { kaf_list.Items.Add(dr[1]); } if (Sel <= kaf_list.Items.Count) { kaf_list.SelectedIndex = Sel; } } pe.Dispose(); //сделать повторную загрузку в список групп //заполнить преподов по алфавиту string q = "select id, " + " 'prepod' = prepod.fam + ' ' + left(prepod.im,1) + '. ' + left(prepod.ot,1) + '.', " + " dolznost_id, stepen_id, zvanie_id, kafedra_id, phone, sex, address, actual, fam, im, ot " + " from prepod " + " where fam <> '0' " + " order by fam, im, ot "; sda = new SqlDataAdapter(q, main.global_connection); prepod_set = new DataTable(); sda.Fill(prepod_set); prepod_list.Items.Clear(); foreach (DataRow rr in prepod_set.Rows) { prepod_list.Items.Add(rr[1].ToString()); } prepod_list.SelectedIndex = GetPosById(prepod_set, prepidn); }
/// <summary> /// редактирование преподавателя /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void toolStripButton2_Click(object sender, EventArgs e) { DataGridViewCell cell = dataGridView1.SelectedCells[0]; int row = cell.RowIndex; int prep_id = (int)prep_set.Rows[row][13]; prepod_edit pe = new prepod_edit(); pe.prep_id = prep_id; pe.dolz_id = (int)prep_set.Rows[row][8]; pe.zvan_id = (int)prep_set.Rows[row][10]; pe.uch_id = (int)prep_set.Rows[row][12]; pe.kaf_id = (int)kaf_set.Rows[kaf_list.SelectedIndex][0]; pe.pictureBox1.Image = GetPhotoFromBD("prepod", prep_id); pe.deny_photo = true; pe.zavkaf_id = (int)kaf_set.Rows[sprav_prepods.kafedra_sel][3]; pe.status_box.Checked = (bool)prep_set.Rows[row][14]; if (pe.status_box.Checked) { pe.status_box.Text = "Статус: работает"; } else { pe.status_box.Text = "Статус: уволен"; } bool sex = (bool)prep_set.Rows[row][17]; if (sex == false) { pe.female.Checked = true; } pe.fam.Text = prep_set.Rows[row][1].ToString(); pe.im.Text = prep_set.Rows[row][2].ToString(); pe.ot.Text = prep_set.Rows[row][3].ToString(); pe.phone.Text = prep_set.Rows[row][16].ToString(); pe.email.Text = prep_set.Rows[row][18].ToString(); DialogResult pres = pe.ShowDialog(); // ----------- if (pres == DialogResult.Cancel) { return; } string famn = pe.fam.Text.Trim(); string imn = pe.im.Text.Trim(); string otn = pe.ot.Text.Trim(); int kafidn = pe.kaf_id; int dolzn = pe.dolz_id; int stepidn = pe.uch_id; int zvann = pe.zvan_id; bool actualn = pe.status_box.Checked; string addrn = pe.email.Text.Trim();; string phonen = pe.phone.Text.Trim(); bool sexn = pe.male.Checked; //фото сохраняется отдельно SqlCommand cmd = new SqlCommand(); cmd.Connection = main.global_connection; cmd.CommandText = "select prepod.actual, " + " kafedra.name from prepod " + " join kafedra on prepod.kafedra_id = kafedra.id " + " where fam like @FAM and " + " im like @IM and " + " ot like @OT and " + " sex = @SEX "; cmd.Parameters.Add("@FAM", SqlDbType.NVarChar).Value = famn; cmd.Parameters.Add("@IM", SqlDbType.NVarChar).Value = imn; cmd.Parameters.Add("@OT", SqlDbType.NVarChar).Value = otn; cmd.Parameters.Add("@SEX", SqlDbType.Bit).Value = sexn; SqlDataAdapter sda = new SqlDataAdapter(cmd); DataTable oldprepods = new DataTable(); sda.Fill(oldprepods); //добавить новую запись в БД cmd = new SqlCommand(); cmd.Connection = main.global_connection; cmd.CommandText = "update prepod set " + " fam = @FAM, im = @IM, ot = @OT, " + " kafedra_id = @KAFEDRA_ID, dolznost_id = @DOLZNOST_ID, " + " stepen_id = @STEPEN_ID, zvanie_id = @ZVANIE_ID, " + " actual = @ACTUAL, address = @ADDRESS, " + " phone = @PHONE, sex = @SEX " + " where id = @PREPPID"; cmd.Parameters.Add("@FAM", SqlDbType.NVarChar).Value = famn; cmd.Parameters.Add("@IM", SqlDbType.NVarChar).Value = imn; cmd.Parameters.Add("@OT", SqlDbType.NVarChar).Value = otn; cmd.Parameters.Add("@KAFEDRA_ID", SqlDbType.Int).Value = kafidn; cmd.Parameters.Add("@DOLZNOST_ID", SqlDbType.Int).Value = dolzn; cmd.Parameters.Add("@STEPEN_ID", SqlDbType.Int).Value = stepidn; cmd.Parameters.Add("@ZVANIE_ID", SqlDbType.Int).Value = zvann; cmd.Parameters.Add("@ACTUAL", SqlDbType.Bit).Value = actualn; cmd.Parameters.Add("@ADDRESS", SqlDbType.NVarChar).Value = addrn; cmd.Parameters.Add("@PHONE", SqlDbType.NVarChar).Value = phonen; cmd.Parameters.Add("@SEX", SqlDbType.Bit).Value = sexn; cmd.Parameters.Add("@PREPPID", SqlDbType.Int).Value = prep_id; try { cmd.ExecuteNonQuery(); } catch (Exception exx) { MessageBox.Show("Неожиданный сбой при передаче данных. " + " Повтоите операцию ввода еще раз.", "Ошибка передачи данных", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (pe.photochanged) { FilePhoto = pe.FilePhoto; save_prepod_photo_by_id(prep_id); } //проверить зав кафедрой if (pe.zav_changed) { //дать запрос и поставить в поле завкаф нулевого препода cmd = new SqlCommand("update kafedra set zav_kaf_id=69 where " + "id = " + kaf_set.Rows[kaf_list.SelectedIndex][0].ToString(), main.global_connection); cmd.ExecuteNonQuery(); int Sel = kaf_list.SelectedIndex; //загрузить кафедры, получить активную string selcom = "select id, name_krat, name, " + " zav_kaf_id from kafedra " + "where actual=1 " + "order by priority"; main.global_adapter = new SqlDataAdapter(selcom, main.global_connection); kaf_set = new DataTable(); main.global_adapter.Fill(kaf_set); foreach (DataRow dr in kaf_set.Rows) { kaf_list.Items.Add(dr[1]); } if (Sel <= kaf_list.Items.Count) { kaf_list.SelectedIndex = Sel; } } bool newzav = (pe.dolz_list.Text.ToLower().Trim().Contains("заведующий")); //сохранить данные нового зав каф if (newzav) { //дать запрос и поставить в поле завкаф нулевого препода cmd = new SqlCommand("update kafedra set zav_kaf_id=@ZAV where " + "id = " + kaf_set.Rows[kaf_list.SelectedIndex][0].ToString(), main.global_connection); cmd.Parameters.Add("@ZAV", SqlDbType.Int).Value = prep_id; cmd.ExecuteNonQuery(); int Sel = kaf_list.SelectedIndex; //загрузить кафедры, получить активную string selcom = "select id, name_krat, name, zav_kaf_id from kafedra " + "where actual=1 " + "order by priority"; main.global_adapter = new SqlDataAdapter(selcom, main.global_connection); kaf_set = new DataTable(); main.global_adapter.Fill(kaf_set); foreach (DataRow dr in kaf_set.Rows) { kaf_list.Items.Add(dr[1]); } if (Sel <= kaf_list.Items.Count) { kaf_list.SelectedIndex = Sel; } } pe.Dispose(); //сделать повторную загрузку kaf_list_SelectedIndexChanged_1(sender, new EventArgs()); }