Файл: Методические указания по организации самостоятельной работы студентов Для подготовки к лабораторной работе необходимо повторить следующий теоретический материал таблица, поле, запись, ячейка, ключ, типы данных в ms access, целостность данных.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.12.2023
Просмотров: 55
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
comboBox_Gender. Существует 2 способа получения доступа к элементам коллекции, которая будет представлять возможные значения в элементе comboBox. Первый способ - выбрать свойство Items, в окне Properties, и нажать на кнопку (рисунок 4.2). Второй способ – нажать на стрелку в правом верхнем углу элемента, в появившемся меню выбрать пункт EditItems (рисунок 4.3).
Рисунок 4.2 – Окно свойств компонента comboBox
Рисунок 4.3 – Меню компонента comboBox
В появившемся окне напишите возможные значения элемента: мужской, женский (рисунок 4.4).
Рисунок 4.4 – Редактирование списка в компоненте comboBox
Для задания типа льготы, следует сделать привязку данных к таблице Priveleges. Для этого выберите элемент comboBox_Priveleges и, в меню, которое появляется при нажатии на стрелку в правом верхнем углу элемента, выберите Usedatabounditems. Указать значения, как показано на рисунке 4.5. Сделайте аналогичные действия для comboBox_Room, указав значения как на рисунке 4.6.
Рисунок 4.5 – Привязка данных о льготе к таблице Priveleges
Рисунок 4.6 - Привязка данных для comboBox_Room
С панели инструментов (ToolBox) добавьте на форму компонент StudentsTableAdapter и дайте ему имя studentsTableAdapter (как аналог: добавьте на форму элемент bindingSource и перетащите его на форму. Откройте свойства bindingSource1 и щелкните по полю DataSource. Выберите Other Data Sources/ Project Data Sources/ HostelDataSet . В свойстве Data Member выбрать таблицу Students ).
Создайте запросы для добавления и модификации данных.
Для этого следует в окне Solution Explorer щелкнуть дважды источник данных HostelDataSet. В открывшемся дизайнере источника данных выбрать StudentsTableAdapter, нажать правой кнопкой мыши и в появившемся меню выбрать AddQuery, затем Use SQL Statament, затем Next. В окне выбора типа запроса выбрать
UPDATE и нажать Next. Заменить текст предлагаемого запроса на приведенный ниже и в следующем окне задать имя запроса UpdateQuery.
UPDATE Students SET SNP = ?, [Birth Year] = ?, Gender = ?, Address = ?, [Group] = ?, [Privelege Code] = ?, [Passport] = ?, [Room] = ? WHERE ([Student Code] = ?)
Опять щелкнуть правой кнопкой мыши по StudentsTableAdapter и аналогично выполнив действия AddQuery / UseSQLStatament/ DELETE добавить запрос на удаление:
DELETE FROM Students WHERE ([Student code] = ?)
Сохранить запрос, дав ему имя DeleteQuery.
Далее следует добавить новый запрос для получения данных с параметрами в StudentsTableAdapter, для этого щелкнуть правой кнопкой мыши по StudentsTableAdapter и аналогично выполнив действияAddQuery / UseSQLStatament/ SELECTwhichreturnsrows и добавить следующий запрос.
SELECT [Student code], SNP, [Birth Year], Gender, Address, [Group], [Privelege code], [Passport], [Room], [Colonize date]
FROM Students
WHERE ([Student code] = ?)
Запрос на добавление данных можно не добавлять, так как требуемый текст совпадает со стандартной командой INSERT прописанной а адаптере таблицы. Посмотреть (и исправить при необходимости) стандартные команды, прописанные в адаптере таблицы можно, выбрав нужный адаптер таблицы (например, StudentsTableAdapter) в дизайнере источника данных, и открыв в окне Properties нужные запросы (рис. 4.7)
Рисунок 4.7 – Просмотр запросов для добавления и модификации данных
Теперь можно перейти к коду для работы с формой. Данная форма будет иметь два конструктора. Первый – без параметров, для добавления новой записи, второй будет принимать информацию о значениях полей выбранной строки, для редактирования информации. Напишите их, предварительно объявив переменные.
///
/// true - если запись модифицируется, false - если создаётся новая
///
bool edit;
///
/// id модифицируемого элемента
///
int id;
///
/// конструктор формы, для создания новой записи
///
public EditForm()
{
InitializeComponent();
roomsTableAdapter.Fill(hostelDataSet.Rooms);
privelegesTableAdapter.Fill(hostelDataSet.Priveleges);
edit = false;
}
///
/// конструктор формы, для модификации уже существующей записи
///
///
Значение поля ФИО
///
Значение поля Дата рождения
///
Значение поля пол
///
Значение поля адресс
///
Значение поля академическа группа
///
Значение поля тип льготы
///
Значение поля документ
///
Значение поля комната
///
Первичный ключ поля
public EditForm(String SNP, DateTime BirthDate, String Gender, String Address, String Group, int Discount, String Doc, int room, int id)
:this()
{
roomsTableAdapter.Fill(hostelDataSet.Rooms);
privelegesTableAdapter.Fill(hostelDataSet.Priveleges);
edit = true;
this.id = id;
this.textBox_SNP.Text = SNP;
this.dateTimePicker_Birth.Value = BirthDate;
if (Gender.ToUpper() == "М")
{
comboBox_Gender.SelectedIndex = 0;
}
else if(Gender.ToUpper() == "Ж")
{
comboBox_Gender.SelectedIndex = 1;
}
this.textBox_Address.Text = Address;
this.textBox_Group.Text = Group;
this.comboBox_Discount.SelectedValue = Discount;
this.textBox_Document.Text = Doc;
this.comboBox_Room.SelectedValue = room;
}
Уберите из функции обработки события EditForm_Load строки заполнения адаптеров таблиц (так как они заполняются в конструкторах):
roomsTableAdapter.Fill(hostelDataSet.Rooms);
privelegesTableAdapter.Fill(hostelDataSet.Priveleges);
Создайте обработчики нажатия на кнопки.
private void button_OK_Click(object sender, EventArgs e)
{
string Gender = "";
if (comboBox_Gender.SelectedIndex == 0)
{
Gender = "М";
}
else if (comboBox_Gender.SelectedIndex == 1)
{
Gender = "Ж";
}
if (edit)
{
studentsTableAdapter.UpdateQuery(textBox_SNP.Text, dateTimePicker_Birth.Value, Gender, textBox_Address.Text, textBox_Group.Text, Convert.ToInt32(comboBox_Discount.SelectedValue), textBox_Document.Text, Convert.ToInt32(comboBox_Room.SelectedValue), id);
}
else
{
studentsTableAdapter.Insert(textBox_SNP.Text, dateTimePicker_Birth.Value, Gender, textBox_Address.Text, textBox_Group.Text, Convert.ToInt32(comboBox_Discount.SelectedValue), textBox_Document.Text, Convert.ToInt32(comboBox_Room.SelectedValue), DateTime.Now);
}
this.Close();}
private void button_Cancel_Click(object sender, EventArgs e)
{
this.Close();
}
К главной форме, созданой на первой работе, следует добавить пункт меню EditForm и подпункты в него: Add, Delete иUpdate(рисунок 4.8). Измените у элемента DataGridView1 в свойстве SelectionMode значение на FullRowSelect.
Рисунок 4.8 – Изменение главной формы
Создайте обработчики событий нажатия пунктов меню, добавив соответствующий код.
private void aDDToolStripMenuItem_Click(object sender, EventArgs e)
{
EditForm edt = new EditForm();
edt.ShowDialog();
studentsTableAdapter.Fill(hostelDataSet.Students);
hostelDataSet.AcceptChanges();
}
private void updateToolStripMenuItem_Click(object sender, EventArgs e)
{
HostelDataSet.StudentsDataTable st = new HostelDataSet.StudentsDataTable();
studentsTableAdapter.FillBy(st, Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value));
object[] row = st.Rows[0].ItemArray;
EditForm edt = new EditForm(row[1].ToString(), Convert.ToDateTime(row[2]), row[3].ToString(), row[4].ToString(), row[5].ToString(), Convert.ToInt32(row[6]), row[7].ToString(), Convert.ToInt32(row[8]), Convert.ToInt32(row[0]));
edt.ShowDialog();
studentsTableAdapter.Fill(hostelDataSet.Students);
hostelDataSet.AcceptChanges();
}
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
studentsTableAdapter.DeleteQuery(Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value));
studentsTableAdapter.Fill(hostelDataSet.Students);
hostelDataSet.AcceptChanges();
}
Протестируйте приложение.
4.4 Содержание отчета
Отчет должен содержать: цель, задания полученные от преподавателя и результат их выполнения, выводы по работе.
4.5 Контрольные задания и вопросы
1 Расскажите про элемент TableAdapter иего свойства.
2 Какая команда добавляет строки в таблицу?
3 Какая команда изменяет строки в таблице?
4 Какая команда удаляет строки из таблицы?
5 Как изменить или удалить данные в одной таблице, основываясь на сведения из другой таблицы?
6 Можно ли изменять данные в несколькиз таблицах одной командой?
5 Формирование отчетов
5.1 Цель работы:
Научиться создавать отчеты с помощью инструмента Windows Report Viewer.
5.2 Методические указания по организации самостоятельной работы студентов
Необходимо повторить следующий теоретический материал: элементы для построения отчетов, элемент MicrosoftReportViewer и его свойства,
5.3 Порядок выполнения работы и методические указания к её выполнению
5.3.1 Создание новый формы
Создайте новую форму в текущем проекте и задайте ей имя ReportViewer. Вынесите объект MicrosoftReportViewer на созданную форму (рисунок 5.1).
Рисунок 5.1 - Форма ReportViewer
Перейдите на главную форму MainForm. Добавьте пункт меню ReportViewer. Щелкните дважды по этому полю и напишите следующий код:
private void reportViewerToolStripMenuItem_Click(object sender, EventArgs e)
{
ReportViewer rf = new ReportViewer();
rf.ShowDialog();
}
5.3.2 Создание отчета
Щелкните левой кнопкой мыши по стрелочке в уголке элемента ReportViewer1. В выпадающем меню выберите пункт Designa New Report. Откроется диалоговое окно Мастер создания отчетов (рисунок 5.2).В мастере формирования отчетов выполните все пункты, которые показаны на рисунках 5.3 – 5.7.
Рисунок 5.2 - Мастер отчетов
Рисунок 5.3 - Выбора источника данных
Рисунок 5.4 - Выбор типа отчета
Рисунок 5.5 - Создание таблицы
Рисунок 5.6 - Выбор макета таблицы
Рисунок 5.7 - Выбор стиля отчета
Рисунок 5.7 - Завершение работы мастера отчетов
5.3.3 Выбор источника отчетов для WindowsReportViewer1.
Перейдите на форму ReportViewer. Щелкните левой кнопкой мыши по элементу WindowsReportViewer1. В выпадающем меню выберите пункт ChooseReport и выберите ваш созданный отчет.
Протестируйте приложение.
5.4 Содержание отчета
Отчет должен содержать: цель, задания полученные от преподавателя и результат их выполнения, выводы по работе.
5.5 Контрольные задания и вопросы
1 Расскажите про элемент MicrosoftReportViewer иего свойства.
2 Для чего нужны отчеты в базах данных?
3 Как сформировать отчет и подключить его к программе?
Рисунок 4.2 – Окно свойств компонента comboBox
Рисунок 4.3 – Меню компонента comboBox
В появившемся окне напишите возможные значения элемента: мужской, женский (рисунок 4.4).
Рисунок 4.4 – Редактирование списка в компоненте comboBox
Для задания типа льготы, следует сделать привязку данных к таблице Priveleges. Для этого выберите элемент comboBox_Priveleges и, в меню, которое появляется при нажатии на стрелку в правом верхнем углу элемента, выберите Usedatabounditems. Указать значения, как показано на рисунке 4.5. Сделайте аналогичные действия для comboBox_Room, указав значения как на рисунке 4.6.
Рисунок 4.5 – Привязка данных о льготе к таблице Priveleges
Рисунок 4.6 - Привязка данных для comboBox_Room
С панели инструментов (ToolBox) добавьте на форму компонент StudentsTableAdapter и дайте ему имя studentsTableAdapter (как аналог: добавьте на форму элемент bindingSource и перетащите его на форму. Откройте свойства bindingSource1 и щелкните по полю DataSource. Выберите Other Data Sources/ Project Data Sources/ HostelDataSet . В свойстве Data Member выбрать таблицу Students ).
Создайте запросы для добавления и модификации данных.
Для этого следует в окне Solution Explorer щелкнуть дважды источник данных HostelDataSet. В открывшемся дизайнере источника данных выбрать StudentsTableAdapter, нажать правой кнопкой мыши и в появившемся меню выбрать AddQuery, затем Use SQL Statament, затем Next. В окне выбора типа запроса выбрать
UPDATE и нажать Next. Заменить текст предлагаемого запроса на приведенный ниже и в следующем окне задать имя запроса UpdateQuery.
UPDATE Students SET SNP = ?, [Birth Year] = ?, Gender = ?, Address = ?, [Group] = ?, [Privelege Code] = ?, [Passport] = ?, [Room] = ? WHERE ([Student Code] = ?)
Опять щелкнуть правой кнопкой мыши по StudentsTableAdapter и аналогично выполнив действия AddQuery / UseSQLStatament/ DELETE добавить запрос на удаление:
DELETE FROM Students WHERE ([Student code] = ?)
Сохранить запрос, дав ему имя DeleteQuery.
Далее следует добавить новый запрос для получения данных с параметрами в StudentsTableAdapter, для этого щелкнуть правой кнопкой мыши по StudentsTableAdapter и аналогично выполнив действияAddQuery / UseSQLStatament/ SELECTwhichreturnsrows и добавить следующий запрос.
SELECT [Student code], SNP, [Birth Year], Gender, Address, [Group], [Privelege code], [Passport], [Room], [Colonize date]
FROM Students
WHERE ([Student code] = ?)
Запрос на добавление данных можно не добавлять, так как требуемый текст совпадает со стандартной командой INSERT прописанной а адаптере таблицы. Посмотреть (и исправить при необходимости) стандартные команды, прописанные в адаптере таблицы можно, выбрав нужный адаптер таблицы (например, StudentsTableAdapter) в дизайнере источника данных, и открыв в окне Properties нужные запросы (рис. 4.7)
Рисунок 4.7 – Просмотр запросов для добавления и модификации данных
Теперь можно перейти к коду для работы с формой. Данная форма будет иметь два конструктора. Первый – без параметров, для добавления новой записи, второй будет принимать информацию о значениях полей выбранной строки, для редактирования информации. Напишите их, предварительно объявив переменные.
///
/// true - если запись модифицируется, false - если создаётся новая
///
bool edit;
///
/// id модифицируемого элемента
///
int id;
///
/// конструктор формы, для создания новой записи
///
public EditForm()
{
InitializeComponent();
roomsTableAdapter.Fill(hostelDataSet.Rooms);
privelegesTableAdapter.Fill(hostelDataSet.Priveleges);
edit = false;
}
///
/// конструктор формы, для модификации уже существующей записи
///
///
Значение поля ФИО
///
Значение поля Дата рождения
///
Значение поля пол
///
Значение поля адресс
///
Значение поля академическа группа
///
Значение поля тип льготы
///
Значение поля документ
///
Значение поля комната
///
Первичный ключ поля
public EditForm(String SNP, DateTime BirthDate, String Gender, String Address, String Group, int Discount, String Doc, int room, int id)
:this()
{
roomsTableAdapter.Fill(hostelDataSet.Rooms);
privelegesTableAdapter.Fill(hostelDataSet.Priveleges);
edit = true;
this.id = id;
this.textBox_SNP.Text = SNP;
this.dateTimePicker_Birth.Value = BirthDate;
if (Gender.ToUpper() == "М")
{
comboBox_Gender.SelectedIndex = 0;
}
else if(Gender.ToUpper() == "Ж")
{
comboBox_Gender.SelectedIndex = 1;
}
this.textBox_Address.Text = Address;
this.textBox_Group.Text = Group;
this.comboBox_Discount.SelectedValue = Discount;
this.textBox_Document.Text = Doc;
this.comboBox_Room.SelectedValue = room;
}
Уберите из функции обработки события EditForm_Load строки заполнения адаптеров таблиц (так как они заполняются в конструкторах):
roomsTableAdapter.Fill(hostelDataSet.Rooms);
privelegesTableAdapter.Fill(hostelDataSet.Priveleges);
Создайте обработчики нажатия на кнопки.
private void button_OK_Click(object sender, EventArgs e)
{
string Gender = "";
if (comboBox_Gender.SelectedIndex == 0)
{
Gender = "М";
}
else if (comboBox_Gender.SelectedIndex == 1)
{
Gender = "Ж";
}
if (edit)
{
studentsTableAdapter.UpdateQuery(textBox_SNP.Text, dateTimePicker_Birth.Value, Gender, textBox_Address.Text, textBox_Group.Text, Convert.ToInt32(comboBox_Discount.SelectedValue), textBox_Document.Text, Convert.ToInt32(comboBox_Room.SelectedValue), id);
}
else
{
studentsTableAdapter.Insert(textBox_SNP.Text, dateTimePicker_Birth.Value, Gender, textBox_Address.Text, textBox_Group.Text, Convert.ToInt32(comboBox_Discount.SelectedValue), textBox_Document.Text, Convert.ToInt32(comboBox_Room.SelectedValue), DateTime.Now);
}
this.Close();}
private void button_Cancel_Click(object sender, EventArgs e)
{
this.Close();
}
К главной форме, созданой на первой работе, следует добавить пункт меню EditForm и подпункты в него: Add, Delete иUpdate(рисунок 4.8). Измените у элемента DataGridView1 в свойстве SelectionMode значение на FullRowSelect.
Рисунок 4.8 – Изменение главной формы
Создайте обработчики событий нажатия пунктов меню, добавив соответствующий код.
private void aDDToolStripMenuItem_Click(object sender, EventArgs e)
{
EditForm edt = new EditForm();
edt.ShowDialog();
studentsTableAdapter.Fill(hostelDataSet.Students);
hostelDataSet.AcceptChanges();
}
private void updateToolStripMenuItem_Click(object sender, EventArgs e)
{
HostelDataSet.StudentsDataTable st = new HostelDataSet.StudentsDataTable();
studentsTableAdapter.FillBy(st, Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value));
object[] row = st.Rows[0].ItemArray;
EditForm edt = new EditForm(row[1].ToString(), Convert.ToDateTime(row[2]), row[3].ToString(), row[4].ToString(), row[5].ToString(), Convert.ToInt32(row[6]), row[7].ToString(), Convert.ToInt32(row[8]), Convert.ToInt32(row[0]));
edt.ShowDialog();
studentsTableAdapter.Fill(hostelDataSet.Students);
hostelDataSet.AcceptChanges();
}
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
studentsTableAdapter.DeleteQuery(Convert.ToInt32(dataGridView1.SelectedRows[0].Cells[0].Value));
studentsTableAdapter.Fill(hostelDataSet.Students);
hostelDataSet.AcceptChanges();
}
Протестируйте приложение.
4.4 Содержание отчета
Отчет должен содержать: цель, задания полученные от преподавателя и результат их выполнения, выводы по работе.
4.5 Контрольные задания и вопросы
1 Расскажите про элемент TableAdapter иего свойства.
2 Какая команда добавляет строки в таблицу?
3 Какая команда изменяет строки в таблице?
4 Какая команда удаляет строки из таблицы?
5 Как изменить или удалить данные в одной таблице, основываясь на сведения из другой таблицы?
6 Можно ли изменять данные в несколькиз таблицах одной командой?
5 Формирование отчетов
5.1 Цель работы:
Научиться создавать отчеты с помощью инструмента Windows Report Viewer.
5.2 Методические указания по организации самостоятельной работы студентов
Необходимо повторить следующий теоретический материал: элементы для построения отчетов, элемент MicrosoftReportViewer и его свойства,
5.3 Порядок выполнения работы и методические указания к её выполнению
5.3.1 Создание новый формы
Создайте новую форму в текущем проекте и задайте ей имя ReportViewer. Вынесите объект MicrosoftReportViewer на созданную форму (рисунок 5.1).
Рисунок 5.1 - Форма ReportViewer
Перейдите на главную форму MainForm. Добавьте пункт меню ReportViewer. Щелкните дважды по этому полю и напишите следующий код:
private void reportViewerToolStripMenuItem_Click(object sender, EventArgs e)
{
ReportViewer rf = new ReportViewer();
rf.ShowDialog();
}
5.3.2 Создание отчета
Щелкните левой кнопкой мыши по стрелочке в уголке элемента ReportViewer1. В выпадающем меню выберите пункт Designa New Report. Откроется диалоговое окно Мастер создания отчетов (рисунок 5.2).В мастере формирования отчетов выполните все пункты, которые показаны на рисунках 5.3 – 5.7.
Рисунок 5.2 - Мастер отчетов
Рисунок 5.3 - Выбора источника данных
Рисунок 5.4 - Выбор типа отчета
Рисунок 5.5 - Создание таблицы
Рисунок 5.6 - Выбор макета таблицы
Рисунок 5.7 - Выбор стиля отчета
Рисунок 5.7 - Завершение работы мастера отчетов
5.3.3 Выбор источника отчетов для WindowsReportViewer1.
Перейдите на форму ReportViewer. Щелкните левой кнопкой мыши по элементу WindowsReportViewer1. В выпадающем меню выберите пункт ChooseReport и выберите ваш созданный отчет.
Протестируйте приложение.
5.4 Содержание отчета
Отчет должен содержать: цель, задания полученные от преподавателя и результат их выполнения, выводы по работе.
5.5 Контрольные задания и вопросы
1 Расскажите про элемент MicrosoftReportViewer иего свойства.
2 Для чего нужны отчеты в базах данных?
3 Как сформировать отчет и подключить его к программе?