//обновление данных
        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();
        }