Лабораторная работа № 7 Тема: «Реализация запросов средствами ADO.NET» Реализуем в приложении для вкладки Экзамены следующие возможности: 1. по нажатию на кнопку Добавить запись – открывается окно с полями для ввода новых значений. 2. Значение номера зачетки выбирается из поля со списком, в котором отображается данные, выбранные в объект DataTable Stud. Для реализации первой возможности необходимо добавить в проект форму Project – Add Form в открывшемся окне выберите Windows Form и назовите InsertExam. Расположите на форме следующие объекты: Объект Label для вывода надписей: № зачетки, Предмет, Оценка, Дата сдачи. Для этого свойству Text объекта Label присвойте соответствующие названия. Для ввода номера зачетки перетащите объект – ComboBox. Отображаться в списке будут данные из таблицы Студенты, а добавляться в таблицу будут числовые значения NumZac: Name cmbNumZac Для отображения даты сдачи вставьте объект с панели Toolbox – DateTimePicker. Измените свойства: Name dateSD MinDate 1.01.1960 Для поля оценка вставьте объект ComboBox - cmbOcenka, нажав на треугольник в правом верхнем углу, выберите Edit Items. Введите значения и нажмите ОК. Добавьте объекты TextBox для ввода значений: предмет и ФИО экзаменатора, с именами txtPredmet, txtFIOprep. Добавьте кнопки со свойствами: Name butInsert Text ОК Name butClose Text Закрыть Для отображения выборочных данных из таблицы Students: Добавить using System.Data.OleDb; в программный код формы InsertExam Изменить программный код следующим образом: public partial class InsertExam : Form { OleDbDataReader rdr; OleDbConnection con; OleDbCommand cmd; string InstConnectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Институт_Петров.mdb"; public InsertExam() { InitializeComponent(); con = new OleDbConnection(InstConnectString); con.Open(); // Испольуем метод CreateCommand для создания команды cmd = con.CreateCommand(); cmd.CommandText = "Select Select №зачетки,Фамилия,Имя,Группа From Студенты"; //выполняем команду SQL rdr = cmd.ExecuteReader(); // производим чтение из массива данных while (rdr.Read()) { string tmp = ""; //для каждого нового пункта списка очищаем for (int i = 0; i < 4; i++) { if (tmp != "")// если в массиве данных есть значения tmp += " "; tmp += rdr[i].ToString(); //формируем пункт поля со списком } cmbNumZac.Items.Add(tmp);//добавляем пункт списка к объекту } } Дважды щелкнете по объекту cmbOcenka и введите следующий программный код: private void cmbNumZac_SelectedIndexChanged(object sender, EventArgs e) { string res = cmbNumZac.SelectedItem.ToString();//считываем в переменную //выделенный пункт списка cmbNumZac.ValueMember = res.Substring(0, 6); //вводимое в таблицу значениеэто первые 6 символов пункта списка, которые соответсвуют шестизначному номеру зачетки } Дважды щелкнув по кнопке ОК, введите следующий программный код: if(InsCmd.ExecuteNonQuery()==1)//если запрос написан без ошибок, значит он будет выполнен методом ExecuteNonQuery и вернет значение true или 1. MessageBox.Show("Сведения успешно добавлены", "Добавление", MessageBoxButtons.OK); DataTable Exam = new DataTable("Экзамены"); OleDbDataAdapter datAdapExam = new OleDbDataAdapter("SELECT * FROM Экзамены",con); datAdapExam.Fill(Exam); Дважды щелкнув по кнопке Закрыть, введите следующий программный код: Реализуем программный код для кнопки вкладки Экзамены Добавить запись, дважды щелкнув, введите: InsertExam InsExam = new InsertExam(); InsExam.Show(); //очищаем строки перед загрузкой обновленных значений таблицы Exam.Rows.Clear();