Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
1.1 Цель работы
Научиться работать в среде MS Access, создавать таблицы и редактировать их. Научиться создавать запросы разных видов. создавать формы и создавать отчеты, применять группировку данных в отчете, использовать макросы для организации интерфейса с пользователями.
1.2 Методические указания по организации самостоятельной работы студентов
Для подготовки к лабораторной работе необходимо повторить следующий теоретический материал: таблица, поле, запись, ячейка, ключ, типы данных в MS Access, целостность данных; запросы; сортировка в запросе; вычислительные поля в запросе; язык SQL, форма, элементы управления в формах; отчеты, групповые операции в отчетах; макросы.
1.3 Порядок выполнения работы и методические указания по ее выполнению
В процессе выполнения данной лабораторной работы необходимо создать БД студенческого общежития. При этом должны реализовываться следующие функции:
1.3.1 Создания новой базы данных
Программа MS Access похожа на другие Windows-программы. Главное окно MS Access содержит меню, панели инструментов, строку состояния, рабочую область.
Сразу после того, как запущен MS Access и на экране все еще находится диалоговое окно, следует выбрать Новая база данных.
Если диалогового окна уже нет, тогда следует выполнить команду Файл/Создать или нажать кнопку Создать () на панели инструментов. Появится диалоговое окно Создание файла. При двойном щелчке на команде Новая база данных появится диалоговое окно Файл новой базы данных.
В поле Имя файла следует ввести название новой БД, (например, Общежитие) и нажать кнопку Создать. MS Access создаст новую БД. На экране появится окно новой, пустой БД.
1.3.2 Создания таблиц в режиме конструктора
Надо создать таблицу Студенты (см. рис. 1.1).
Рисунок 1.1 - Таблица Студенты
Для создания таблицы в окне БД следует перейти на закладку Таблицы, затем дважды щелкнуть на команде Создание таблицы в режиме коструктора.
В конструкторе таблиц в первой пустой строке в столбце Имя поля следует ввести Код студента. Для перехода к столбцу Тип данных следует нажать клавишу Tab. В столбце Тип данных с помощью выпадающего меню следует выбрать тип поля - Счетчик. В нижней половине окна есть секция свойств поля, которая отображает свойства избранного типа поля. В столбце Описание приводится описание поля. Вводить его не обязательно, таблица создается и без него.
Следует создать другие поля данной таблицы, повторяя предыдущие действия.
В каждой таблице должно быть поле с уникальным значением для каждой записи. Чтобы назначить ключевое поле, следует, выделив поле, которое будет использоваться в качестве ключевого, нажать кнопку Ключ () в панели инструментов. Слева от имени поля появится символ ключа.
Для сохранения таблицы следует нажать кнопку Сохранить () в панели инструментов, дать имя таблице, и нажать кнопку Ok.
Аналогично следует построить таблицы, показанные на рис. 1.2. В поле Скидка следует установить формат поля Процентный и размер поля Одинарное с плавающей точкой. Чтобы в поле Дата заселения в таблице Студенты по умолчанию ставить текущую системную дату, в поле Значение по умолчанию следует ввести «Date()» - функцию, которая возвращает текущую системную дату.
Рисунок 1.2 - Таблицы БД Общежитие
1.3.3 Связи между таблицами
Если, находясь в окне БД, нажать кнопку Схема данных () на панели инструментов, то откроется окно Схема данных (рис. 1.3). Если схема данных ни разу не сохранялась, то также появится диалоговое окно Добавление таблиц. Следует выбрать таблицу Студенты и нажать кнопку Добавить. Также добавить на схему другие таблицы. После этого нажать Закрыть. В окне Схема данных каждая таблица появится в своем окне.
Рисунок 1.3 - Связи между таблицами
Для установления связи между таблицей Студенты и Комнаты следует выбрать поле № Комнаты в таблице Студенты, и, держа нажатой кнопку мыши, перетянуть курсор из этого поля (он примет вид маленького прямоугольника) на поле № Комнаты в таблице Комнаты. Появится диалоговое окно Связи. В данном окне следует выбрать параметры Обеспечение целостности, Каскадное обновление связанных полей, Каскадное удаление связанных записей и нажать кнопку Создать. Будет создана связь, которая отобразится в виде линию между двумя полями в окне Схема данных.
Аналогично устанавливаются другие связи (рис. 1.3).
Для изменения связей необходимо дважды щелкнуть по линии между двумя таблицами и внести изменения.
Для удаления связи необходимо щелкнуть по линии между двумя таблицами, нажать клавишу Delete, ответить Да для подтверждения удаления, и связь исчезнет.
1.3.4 Введение данных в таблицу
Для ввода данных в таблицу следует открыть ее в режиме таблицы, щелкнуть первую пустую ячейку, ввести данные и перейти к следующей ячейке. Переход между ячейками осуществляется при нажатии клавиши Tab. Если, находясь в последнем поле записи нажать Tab, то, в случае правильного ввода данных, осуществится переход к первому полю следующей записи, при этом введенная строка будет автоматически сохранена в базе данных. Чтобы отказаться от введения данных надо нажать клавишу Esc, не оставляя текущей записи. При вводе данных поля типа Счетчик нужно пропускать, не вводя в них ничего, они будут автоматически заполнены.
Необходимо заполнить все таблицы базы данных информацией по 5-6 записей в каждой таблице.
1.3.5 Создание простого запроса с помощью мастера.
Необходимо создать запрос, отображающий информацию о студентах. Для начала работы с запросами следует выбрать закладку Запросы в окне БД. Для создания простого запроса с помощью мастера следует выбрать пункт Создание запроса с помощью мастера, появится диалоговое окно Создание простых запросов (рис. 1.4).
Следует выбрать таблицу Студенты в выпадающем списке Таблицы/ Запросы, в списке Доступные поля выбрать поле ФИО и нажать кнопку «>». Это поле переместится в список Выбранные поля. Также следует добавить поля Группа, № Комнаты. Далее следует в списке Таблицы/ Запросы выбрать таблицу Комнаты, в списке Доступные поля выбрать поле Стоимость и нажать кнопку «>». Из таблицы Льготы добавить поля Тип льготы, Скидка. После того как все поля будут добавлены, следует нажать кнопку Далее, в появившемся окне указать тип отчета Подробный, в следующем окне в поле ввода текста задать имя запроса Информация о студентах и нажать кнопку Готово для отображения результатов запроса.
Рисунок 1.4 Окно мастера простых запросов
В данном запросе необходимо ввести вычисляемое поле Оплата, в котором будет отображаться сумма оплаты за проживание в комнате студентом с учетом льготной скидки. Для этого необходимо перейти в режим конструктора (кнопка ), в первом пустом столбце ввести следующее выражение: Оплата: [Стоимость] - [Стоимость] * [Скидка]. Данное выражение также может быть построено с использованием инструмента Построитель выражений (кнопка на панели инструментов ). Далее следует запустить запрос на выполнение, перейдя в режим таблицы с помощью кнопки .
Чтобы в получившемся запросе отобразить фамилии студентов в алфавитном порядке, необходимо в режиме конструктора в строке Сортировка в поле ФИО в выпадающем списке выбрать значение По возрастанию. Чтобы отменить сортировку по полю, следует выполнить эти же действия, но выбрать значение Отсутствует.
С помощью условий отбора можете выбрать нужные записи, которые будут появляться в результатах запроса. Например, чтобы в данном запросе выводить информацию только о студентах, имеющих льготы, следует в режиме конструктора запроса в строке Условие отбора в столбце Скидка ввести выражение > 0. Дополнительное условие можно ввести в строке Или.
1.3.6 Создание нового запроса в режиме конструктора
Необходимо создать запрос, отображающий информацию о комнатах. На закладке Запросы в окне БД следует выбрать пункт Создание запроса в режиме конструктора, появится диалоговое окно Добавление таблиц (рис. 1.5), в котором перечислены все таблицы БД.
Рисунок 1.5 - Диалоговое окно Добавление таблиц
В данном окне надо щелкнуть на таблице Комнаты, а потом на кнопке Добавить, потом щелкнуть на таблице Студенты, и опять на кнопке Добавить и нажать кнопку Закрыть. Откроется окно запроса в режиме конструктора (рис. 1.6).
Рисунок 1.6 - Окно «Режим конструктора»
При создании запроса «с нуля» первое, что надо сделать, это добавить к запросу необходимые поля, которые находятся в производном источнике данных (таблице или запросе). Можно также использовать эту процедуру для добавления дополнительных полей в запрос.
Существует два способа добавления поля к запросу.
Первый способ. Щелкнуть на строке Имя таблицы в первом пустом столбце, раскрыть список и выбрать в нем таблицу Комнаты. Щелкнуть на строке Поле в этом же столбце. Раскрыть список и выбрать в нем поле № комнаты (рис. 1.6).
Второй способ. В окне таблицы Студенты, которое находится в верхней части окна конструктора запроса (рис. 1.6) выделить поле Пол, щелкнув по нему курсором мыши, захватить это поле и перетянуть его в строку Имя поля первого пустого столбца (захватить и перетянуть курсор мыши поместить на подмеченное поле, нажать левую клавишу и не отпуская ее, переместить курсор мыши в место назначения, где и отпустить левую клавишу). В этом столбце заполненными окажутся поля Имя поля и Таблица.
Для того чтобы поле отображалось на экране, следует установить контрольную пометку в строке Вывод на экран для соответствующего поля.
Далее следует добавить в запрос поле Количество.
Запрос следует сохранить под именем Характеристика комнат. При просмотре данного запроса можно увидеть, что информация в нем отображается о комнатах, в которых поселен хоть один человек, но было бы интересно видеть информацию и о свободных комнатах. Для этого необходимо изменить вид связи между таблицами в окне конструктора запроса. Следует щелкнуть на связи, нажать правую кнопку мыши, выбрать в контекстном меню команду Параметры объединения и установить тип объединения всех записей из таблицы Комнаты и только тех записей из таблицы Студенты, в которых связанные поля совпадают.
Необходимо добавить вычисляемое поле, которое будет показывать, сколько в комнате осталось свободных мест. В пустом столбце в режиме конструктора с помощь построителя выражений следует ввести выражение: Свободных: [Количество] - Count ( [Пол] ). Так как в данном выражении используется групповая операция нахождения количества записей (Count), то необходимо применить операцию группировки к полям, значения которых не меняются в пределах группы. Для этого необходимо выполнить команду Вид/Групповые операции и установить в строке Групповая операция для поля Свободных значение Выражение, а для остальных полей Группировка (рис. 1.6).
1.3.7 Создания перекрестных запросов
Необходимо с помощью мастера создать перекрестный запрос (или кросс-таблицу), на основе запроса Информация о студентах (рис. 1.7). Мастер перекрестных запросов можно запустить, нажав кнопку Создать на закладке Запросы, и выбрав команду Перекрестный запрос в открывшемся окне Новый запрос.
При создании других перекрестных запросов следует учесть, что перекрестный запрос создается только на базе или одной таблицы, или на базе запроса. Поэтому, если необходимо создать перекрестный запрос, содержащий поля из нескольких таблиц, следует сначала создать вспомогательный запрос, который будет содержать все необходимые поля, а потом использовать этот запрос для создания перекрестного запроса.
Рисунок 1.7 - Образец схемы результата перекрестного запроса
1.3.8 Использование инструмента Автоформа
Для создания с помощью инструмента Автоформа формы для ввода данных в таблицу Студенты следует выбрать закладку Формы в окне БД, нажать кнопку Создать. В появившемся диалоговом окне Новая Форма (рис. 1.8) выбрать Автоформа: в столбец, раскрыть выпадающий список, расположенный снизу диалогового окна, выбрать таблицу, с которой будет связанная текущая форма, то есть Студенты, и нажать кнопку Ok. Появится форма, готовая для ввода данных (рис. 1.9). Необходимо сохранить эту форму под именем Поселение в общежитие.
Рисунок 1.8 - Диалоговое окно «Новая Форма»
1.3.9 Использования средств Мастера форм
Необходимо создать форму Распределение студентов по комнатам, отображающую связанные данные таблиц Студенты и Комнаты (рис. 1.10). В окне БД следует выбрать закладку Формы, нажать кнопку Создать. Появится диалоговое окно Новая Форма (рис. 1.8). Надо выбрать пункт Мастер форм и нажать кнопку Ok. В выпадающем списке Таблицы/Запросы выбрать таблицу, Студенты. В следующем окне нажать кнопку >>, для того чтобы переместить все поля в таблице в список Выбранные поля. Так же добавить все поля из таблицы Комнаты.
Рисунок 1.9 - Форма Поселение в общежитие
Нажать кнопку Далее для продолжения работы. В следующем окне установить параметры так, как показано на рисунке 1.11. и нажать кнопку Далее. Далее в запросе вида формы выбрать Табличный, в запросе стиля оформления формы Стандартный, в следующем диалоговом окне дать имя форме Распределение студентов по комнатам и нажать кнопку Готово. Появится готовая форма (рис. 1.10).Удобство использования главных и подчиненных форм состоит как в том, что отображается связанная информация (в данном случае отображаются студенты, живущие в комнате текущей записи), так и в том, что при заполнении подчиненной таблицы ключ связи из главной таблицы подставляется автоматически (№ Комнаты в таблице Студенты автоматически подставляется из поля № Комнаты текущей записи таблицы Комнаты).
Рисунок 1.10- Форма Распределение студентов по комнатам
Рисунок 1.11 Создание главной и подчиненной форм
1.3.10 Создания формы «c нуля»
Для того, чтобы создать в конструкторе форму для ввода данных в таблицу Льготы, необходимо в окне БД нажать закладку Формы, нажать кнопку Создать, в окне Новая Форма выделить Конструктор. В выпадающем списке в нижней части диалогового окна надо выделить таблицу или запрос, с которым будет связана текущая форма, то есть Льготы. В дальнейшем не будет возможности это сделать. В режиме Конструктор нельзя создать форму, в которой содержатся поля с нескольких таблиц. Нажать кнопку Ok. Появится экран конструктора форм. Теперь можно приступить к разработке формы (рис. 1.12).
Поля, которые можно добавлять к форме, должны появиться в области данных. Если на экране не отображается Список полей, следует вывести его, нажав кнопку Список полей () или команду меню Вид/Список полей.
Чтобы прибавить к форме любое поле, необходимо перетянуть его с списка полей. При создании формы Льготы нужно добавить на форму все поля одноименной таблицы.
Рисунок 1.12 - Окно конструктора форм
1.3.11 Создания полей со списками в форме
Для облегчения ввода данных в форму можно использовать такие элементы управления, как поля со списками, которые позволяют выбрать значение из загружаемых полей или запросов, либо ввести новое значение. В базе данных Общежитие удобно использовать поля со списками для ввода данных в поле Код льготы формы Поселение в общежитие чтобы не запоминать все время, какой категории льготников соответствует какой код. Для создания такого поля со списком следует открыть форму Поселение в общежитие в режиме конструктора, вывести список полей производной таблицы. После этого удалить из формы поле Код льготы. Потом, на панели элементов нажать пиктограмму поля со списком и перетянуть поле Код льготы из списка полей в форму. Появится первое диалоговое окно Создание полей со списком, в котором следует выделить пункт Поле со списком использует значение из таблицы или запроса, и нажать кнопку Далее. В следующем диалоговом окне надо выделить таблицу Льготы и нажать Далее. В следующем диалоговом окне перенести поля Код льготы и Тип льготы из списка Доступные поля в список Выбранные поля и нажать кнопку Далее. Убрать отметку Скрыть ключевой столбец, задать ширину столбцов, и нажать кнопку Далее. В следующем диалоговом окне следует выделить пункт Сохранить в поле, из выпадающего списка выбрать поле Код льготы и нажать кнопку Далее. В поле ввода задать подпись Код льготы и нажать кнопку Готово.
Аналогично создайте поле со списком Пол в форме Поселение в общежитие. При этом рекомендуется из запроса в свойстве Источник срок убрать ключевой столбец, и убрать наличие повторяющихся значений поля введением конструкции DISTINCT в оператор SELECT.
Если возникают проблемы со сформированным списком, необходимо сделать некоторые коррективы. Для конечного доведения списка в его свойствах надо настроить поля Источник срок и Присоединенный столбец. Для того, чтобы открыть свойства необходимо в конструкторе щелкнуть левой клавишей мыши, когда ее курсор находится на элементе Поле со списком, в контекстном меню выбрать команду Свойства. Следует убедиться, что номер присоединенного столбца совпадает с сохраняемым номером поля в запросе, который используется как Источник срок для списка.
С помощью полей со списком можно облегчить некоторые функции взаимодействия пользователя с базой данных. Например, в данной форме удобно было бы выбирать номер комнаты, подходящей по некоторым критериям: нелогично селить вместе студентов разного пола; нельзя поселить студента в комнату, в которой нет свободных мест. Таким образом, список предлагаемых комнат должен быть сформирован с помощью запроса. Подобный запрос в данной базе данных есть Характеристика комнат, необходимо только его доработать, связав с формой Поселение в общежитие. Для этого необходимо открыть запрос в режиме конструктора и в строке Условие отбора в столбце Пол сформировать выражение [Forms]![Поселение в общежитие]![Пол] Or Is Null, а в строке Условие отбора в столбце Свободных сформировать выражение > 0. Далее необходимо открыть форму в режиме конструктора, убрать поле № комнаты, щелкнуть на панели инструментов на элементе Поле со списком, и затем щелкнуть на форме. Запустится мастер создания полей со списком. Необходимо настроить поле со списком, выбрав в качестве источника данных запрос Характеристика комнат, выбрав все поля из данного запроса, настроив их ширину, и сохранив значение поля запроса № комнаты в поле формы № комнаты. Если сейчас посмотреть, как работает данное поле со списком, можно увидеть, что один раз оно срабатывает правильно, а потом список не обновляется. Для постоянного обновления списка необходимо открыть свойства поля со списком, открыть закладку События, создать процедуру обработки события Вход, в которую написать оператор <Имя поля со списком> .Requery.
Аналогично создаются другие элементы управления.
1.3.12 Создания отчета с помощью мастера отчетов
Для создания отчета на основе таблиц Студенты и Льготы необходимо:
- нажать закладку Отчеты в окне БД;
- выбрать команду Создание отчета с помощью мастера. Запустится мастер отчетов;
- в окне Создание отчетов раскрыть выпадающий список Таблицы/Запросы и выделите в нем таблицу Студенты (рис. 1.13), перенести из списка Доступные поля в список Выбранные поля поля Код студента, ФИО, Группа, № комнаты, Дата заселения. Выбрать в списке Таблицы/Запросы таблицу Льготы, перенести из списка Доступные поля в список Выбранные поля поле Тип льготы и нажать кнопку Далее;
- в следующем окне выбрать тип представления данных по студентам;
- в следующем окне для группирования записей данные не вводить, и нажать кнопку Далее.
Рисунок 1.13 - Окно Создание отчетов
Далее надо указать способ сортировки, для чего раскрыть выпадающий список и выделить в нем поле ФИО. Потом выбрать сортировку по возрастанию.
В следующем диалоговом окне следует выбрать вид макета В столбец в секции Макет. Выбрать ориентацию отчета - Книжная или Альбомная и нажать кнопку Далее.
В следующем диалоговом окне мастера отчетов из списка стилей отчета выбрать стиль отчета. Далее задать имя отчета Пропуск и нажать кнопку Готово. Отчет откроется в режиме предварительного просмотра. Открыть отчет в режиме конструктора и изменить его так, чтобы данные по студенту отображались в виде, показанном на рисунке 1.14 (Подпись Код студента изменить на Пропуск в студенческое общежитие №, поля Тип льготы на Примечания, увеличить шрифты).
Рисунок 1.14- Вид отчета Пропуск
1.3.13 Создание отчета с группировкой данных
Во время создания отчетов, кроме возможностей, которые предоставляются мастером отчетов, есть возможность самостоятельно редактировать отчеты в режиме конструктора. Можно создать отчет с группами в мастере, и затем добавить итоговые надписи для некоторых групп записей. Например, необходимо создать отчет Квитанции. Для этого необходимо с помощью мастера создать отчет, выбрав из таблиц поля ФИО, № комнаты, Тип льготы, Стоимость, Скидка. При этом необходимо: выбрать тип представления по студентам, сгруппировать по фамилии, выбрать макет По левому краю1.
Далее необходимо открыть отчет в режиме конструктора, преобразовать его, приведя к виду, показанному рис.1.15. При этом в поле Всего необходимо построить формулу =[Стоимость]-[Скидка]*[Стоимость], а месяц, за который генерируются квитанции можно вычислить, создав поле с формулой =MonthName(Month(Date())).
Рисунок 1.15 Вид отчета Квитанции
Если необходимо в отчете для каждой группы выводить общую информацию, например, подсчитывать какую-либо сумму, то такую информацию надо поместить Примечание группы соответствующей группы. Именно тогда такая итоговая информация будет выводиться в отчете по одному разу для каждой группы. Чтобы получить доступ к примечаниям группы, необходимо выполнить команду Вид / Сортировка и группировка. Появится диалоговое окно Сортировка и группировка, где надо для соответствующей группы в свойство Примечание группы ввести значение Да. После этого в отчете появится для группы примечание, куда необходимо поместить необходимые поля с вычислительным полем и соответствующие надписи.
В данном отчете необходимо создать примечание группы ФИО, и поместить туда поле с формулой, формирующей значение суммы к оплате.
Чтобы добавить в конце отчета итоговое поле Общая сумма, необходимо добавить поле в область Примечание отчета, изменить подпись на Общая сумма, построить в данном поле формулу =Sum([Стоимость]-[Стоимость]*[Скидка]).
1.3.14 Создания макросов
Для начала работы с макросами следует перейти на закладку Макросы. Чтобы создать макрос для открытия формы Поселение в общежитие, следует нажать кнопку Создать, в результате откроется окно Создание Макроса (рис. 1.16). Первый столбец таблицы предназначен для макрокоманд. Второй - для комментариев. В колонке Макрокоманда в выпадающем списке следует выбрать команду Открытьформу, в поле Имя формы задать Поселение в общежитие, в поле Режим задать режим, в котором будет выводиться данная форма, например, Форма. Следует сохранить макрос, предоставив ему имя Поселение в общежитие.
Рисунок 1.16 - Окно Создание макроса
Для того, чтобы просматривать не весь отчет Квитанции, а только одну квитанцию, необходимо: создать макрос; выбрать макрокоманду ОткрытьОтчет; задать Имя отчета Квитанции; задать режим - Просмотр; в поле Условие ввести выражение [ФИО]=[Forms]![Поселение в общежитие]![ФИО]. Условие устанавливает, что значения поля ФИО отчета должно совпадать со значением одноименного поля в форме Поселение в общежитие. Выражение Forms определяет тип объекта. Следующий за именем формы ! определяет имя управляющего элемента. Макрос надо сохранить под именем Квитанция. Далее следует создать кнопку в форме Поселение в общежитие, перетянув имя макроса с закладки Макросы на форму в режиме конструктора.
Аналогично следует создать на форме Поселение в общежитие кнопку, при нажатии на которой будет генерироваться пропуск для поселенного студента.
1.3.15 Создания главной формы БД
Необходимо создать новую пустую форму с именем Панель управления, открыть эту форму в режиме конструктора, перетянуть макрос Поселение в общежитие в эту форму - будет создана кнопка. При нажатии на эту кнопку в режиме формы будет открываться форма Поселение в общежитие.
Далее следует создать пустую кнопку (перетянув ее из инструментальной панели). Начнет работу мастер Создание кнопок. Следует выбрать элементы Работа с формой, Открыть форму, выбрать форму Распределение студентов по комнатам, задать надпись или рисунок на кнопке. В результате, при нажатии на эту кнопку в режиме формы будет открыта форму Распределение студентов по комнатам.
Далее следует создать макросы для открытия других форм и отчетов, кнопки их открытия расположить в форме Панель управления.
Для того, чтобы форма Панель управления открывалась при открытии БД, следует создать макрос, в столбце Макрокоманда, в выпадающем списке выбрать команду Открытьформу, в поле Имя формы задать Панель управления, в поле Режим задать Форма и сохранить макрос, дав ему имя AutoExec.
1.4 Содержание отчета
Отчет должен содержать: цель работы; порядок выполнения работы с описанием структуры разработанных таблиц с собственной БД, схемой базы данных, с обязательным приведением текстов созданных для БД запросов на языке SQL; полученные результаты запросов, формы, отчеты и макросы, выводы по работе.
1.5 Контрольные задания и вопросы
2.Создание базы данных на MS Access и подключение ее к проекту Microsoft visual studio
2.1. Цель работы
Усовершенствовать навыки создания базы данных в MS Access; научиться создавать проект используя Microsoft Visual Studio и язык программирования C#; научиться подключать базу данных к проекту и использовать ее; научиться создавать базу данных в Microsoft Visual Studio.
2.2 Методические указания по организации самостоятельной работы студентов
Необходимо повторить следующий теоретический материал: создание нового Windows Application проекта в Microsoft Visual Studio, подключение базы данных к проекту, использование элементов для работы с базами данных.
2.3 Порядок выполнения работы и методические указания к ее выполнению
2.3.1 Создание базы данных Hostel Ms Access
Создайте новую базу данных в Ms Access под названием Hostel. В этой базе данных должно быть 3 таблицы: Priveleges, Rooms, Students (конструкторы показаны на рис.2.2-2.4). База данных должна иметь такую структуру, как показано на рисунке 2.1. После создания базы данных сохраните ее.
Рисунок 2.1 Схема данных
Рисунок 2.2 Конструктор таблицы Students
Рисунок 2.3 Конструктор таблицы Rooms
Рисунок 2.4 Конструктор таблицы Priveleges
Заполните созданные таблицы данными (примерные данные показаны на рис.2.5-2.7)
Рисунок 2.5 - Таблица Priveleges
Рисунок 2.6 - Таблица Rooms
Рисунок 2.7 - Таблица Students
2.3.2 Создание Windows Application в Microsoft Visual Studio
Для создания нового проекта в Microsoft Visual Studio необходимо выполнить следующую последовательность действий: File->New->Project… Далее в диалоговом окне New Project выбрать Project type Visual C#->Windows, а потом в Templates выбрать Windows Forms Application. В поле Name задайте имя проекта «Hostel» (рис. 2.8), в поле Location укажите путь, куда вы хотите сохранить свой проект и нажмите кнопку OK.
Рисунок 2.8 - Выбор типа создаваемого проекта
2.3.3 Создание подключения к базе данных
После создания проекта щелкните правой кнопкой мыши по форме и нажмите пункт Properties. Задайте в поля Name и Text значение «MainForm». После этого на панели элементов Toolbox выберите элемент bindingSource и перетащите его на форму. Откройте свойства bindingSource1 и щелкните по полю DataSource. В выплывающем списке выберите Add Project Data Source…. В новом диалоговом окне выберите тип источника данных Database и нажмите кнопку «Next». На следующем этапе нажмите кнопку «New Connection» и в новом диалоговом окне (рисунок 2.9) выберите путь к вашей созданной базе данных и нажмите кнопку ОК.
Рисунок 2.9 Создание подключения
После этого нажмите кнопку «Next». После нажатия отобразится диалоговое окно, в котором будет спрашиваться, хотите ли скопировать файл (вашу базу данных) в ваш проект и изменить соединение. Следует выбрать кнопку «Да»(рисунок 2.10).
Рисунок 2.10 Подтверждение создания локальной базы данных
После этого в окне создания подключения к базе данных необходимо выбрать элементы базы данных, которые нам будут нужны в проекте. Поэтому необходимо установить флажок на поле Tables и нажать кнопку Finish (рис.2.11).
Рисунок 2.11- Завершение создания подключения
2.3.4 Создание таблицы
Добавьте на форму элемент DataGridView. При добавлении элемента на форму будет показан выпадающий список, в котором вам необходимо выбрать источник данных для таблицы: bindingSource1->Rooms.
2.3.5 Добавление навигации к таблице
Выберите элемент bindingNavigator и перетащите его на форму. Во всплывающем окне для этого элемента выберите значение None для поля Dock. Перейдите в свойства элемента bindingNavigator1. В поле BindingSource в выплывающем списке выберите источником данных roomsBindingSource. Теперь таблица имеет свою навигацию.
Аналогично добавьте и настройте элементы DataGridView и bindingNavigator для таблиц Students и Privileges.
2.3.6 Добавление меню формы
Выберите в панели Toolbox элемент menuStrip. Добавьте в меню команду File->Exit. После этого щелкните дважды по элементу File->Exit, таким образом вы перейдете к коду этой функции. Добавьте следующий код:
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
Теперь при работе с приложением при нажатии на пункт меню Exit будет осуществляться выход из приложения.
Щелкните по форме и в окне Properties перейдите к событию FormClosing. Щелкните дважды по этому событию и добавьте следующий код:
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
roomsTableAdapter.Update(hostelDataSet);
privelegesTableAdapter.Update(hostelDataSet);
studentsTableAdapter.Update(hostelDataSet);
}
Щелкните левой кнопкой мыши по базе даных Hostel.mdb в Solution Explorer и окне Properties перейдите свойству Copy_To_Output_Directory. Установите в данном свойстве значение Copy if newer.
Конечный вид формы показан на рисунке 2.12. Запустите приложение, протестируйте.
Рисунок 2.12- Главная форма
2.3.6 Добавление меню формы
Добавьте в меню поля DataBase->Rooms, DataBase->Students, DataBase->Privileges.
Добавьте на форму новый элемент label и удалите два компонента dataGridView, оставив один. После этого щелкните дважды по пункту меню DataBase->Rooms, после чего вы перейдете к коду данной функции.
Добавьте следующий код:
private void roomsToolStripMenuItem_Click(object sender, EventArgs e)
{
bindingNavigator1.BindingSource = roomsBindingSource;
dataGridView1.DataSource = roomsBindingSource;
label1.Text= "Rooms";
}
Аналогично добавьте следующий код для пункта меню DataBase->Students:
private void studentsToolStripMenuItem_Click(object sender, EventArgs e)
{
bindingNavigator1.BindingSource = studentsBindingSource;
dataGridView1.DataSource = studentsBindingSource;
label1.Text= "Students";
}
И для пункта меню DataBase->Privileges.
private void privilagesToolStripMenuItem_Click(object sender, EventArgs e)
{
bindingNavigator1.BindingSource = privelegesBindingSource;
dataGridView1.DataSource = privelegesBindingSource;
label1.Text = "Privileges";
}
Щелкните правой кнопкой мыши по форме и перейдите к событию Load. Щелкните дважды по этому событию и добавьте к уже написанным строчкам кода в этой функции следующую строку:
dataGridView1.AutoGenerateColumns = true;
Теперь мы можем переключаться между таблицами для работы с ними во время работы программы с помощью пунктов меню. Конечный вид главной формы показан на рисунке 2.13. Запустите, протестируйте приложение.
Рисунок 2.13 - Конечный вид формы
2.3.6 Добавление отображения связанных таблиц
Добавим в проект новую форму, на которой покажем расселение студентов по комнатам. Через пункт Project/Add New Item/Windows Form добавьте к проекту новую форму. Назовите ее RSForm и сохраните в файле RSForm.cs. Измените значение свойства формы Text на Расселение: Выполните команду Data/Show Data Sources. В открывшемся окне Data Sources (рис.2.14) отображен источник данных HostelDataSet. Щелкните на стрелке вниз возле таблицы Rooms и выберите в выпадающем списке вид отображения Details. После этого щелкните по названию таблицы Rooms левой кнопкой мыши, и не отпуская ее, перетащите на форму.
Рисунок 2.14 Источник данных HostelDataSet
В результате на форме появятся средства для отображения полей таблицы (5 компонентов Label и TextBox), средство навигации по таблице (BindingNavigator), а в нижней части рабочей области среды разработки появились пять невидимых объектов предназначены для связи формы с таблицей (рис 2.15). Обратите внимание, в окне Data Sources под полями таблицы Rooms в виде подтаблицы располагается таблица Students Подтаблица показывает, что таблица Students является вторичной по отношению к таблице Rooms.
Рисунок 2.15 Добавление к форме элементов для отображения таблицы Rooms
Выведем данные из таблицы студентов в табличном виде под полями таблицы комнат. Для этого следует щелкнуть по подтаблице Students под списком полей таблицы Rooms, выбрать в выпадающем списке вид отображения dataGridView и перенести подтаблицу на форму, поместив внизу формы. На форме появится dataGridView для отображения связанных записей из таблицы Students и невидимые компоненты для связи.
Добавьте кнопку (button) на форму и измените значение ее свойства Text на Подтвердить изменения. Щелкните на кнопке и в появившемся шаблоне функции обработки ее нажатия напишите код:
private void button1_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Вы действительно хотите подтвердить изменения?", "Изменение данных", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
roomsBindingSource.EndEdit();
roomsTableAdapter.Update(hostelDataSet);
studentsTableAdapter.Update(hostelDataSet);}
}
На главной форме следует добавить пункт меню View и в него подпункт Расселение. Добавьте код в обработчик события нажатия на пункт меню Расселение:
private void расселениеToolStripMenuItem_Click(object sender, EventArgs e)
{
RSForm rs = new RSForm();
rs.ShowDialog();
privelegesTableAdapter.Fill(hostelDataSet.Priveleges);
studentsTableAdapter.Fill(hostelDataSet.Students);
roomsTableAdapter.Fill(hostelDataSet.Rooms);
}
Запустите приложение. Теперь, если с главной формы перейти на форму Расселение, то можно увидеть отображение комнат и живущих в них студентов (рис 2.16). Протестируйте работу этой формы и изменение данных на ней.
Рисунок 2.15 Форма отображения связанных данных
2.4 Содержание отчета
Отчет должен содержать: цель, задания, полученные от преподавателя и результат их выполнения (вид формы и код), выводы по работе.
2.5 Контрольные задания и вопросы
1 Как создать новое Windows Application проекта в Microsoft Visual Studio?
2 Как осуществляется подключение базы данных к проекту?
3 Какие элементы используются для подключения данных?
4 Какие элементы используются для отображения данных?
5 В чем отличие работы с данными при использовании различных СУДБ?
6 Как подтвердить изменения в таблице?
7 Как отобразить связанные данные?
3.1 Цель работы
Приобретение навыков использования в программе визуального компонента dataGridView и изучение особенностей класса OleDbConnection для реализации запросов SQL и улучшения знаний о возможностях оператора SELECT.
3.2 Методические указания по организации самостоятельной работы студентов
Начальным требованием для выполнения задания является знание таких теоретических знаний: структурированный язык (SQL); запрос; оператор SELECT; визуальный компонент dataGridView; статический запрос в VisualStudio.
3.3 Порядок выполнения работы и методические указания по ее выполнению
Реализуем дополнительные возможности в нашей программе. Добавим в проект новую форму, благодаря которой пользователь сможет писать произвольные запросы к БД. Это будет своеобразный редактор запросов, который позволит узнать об основных возможностях оператора SELECT.
3.3.1 Установка компонентов на форму
Через пункт Project/Add New Item/Windows Form добавьте к проекту новую форму. Назовите ее QueryEdit и сохраните в файле QueryEdit.cs.
Добавьте в главном меню программы еще один пункт QueryEdit и создайте для него обработчик события:
private void queryEditionToolStripMenuItem1_Click(object sender, EventArgs e)
{
QueryEdit qe = new QueryEdit();
qe.Show();
}
Добавьте на форму QueryEdit следующие компоненты: RichTextBox, три Button, DataGridView и расположите их так, как указано на рисунке 3.1.
Установите заданным по умолчанию текст у компонента RichTextBox равным «SELECT» (свойство Text) и дайте компоненту имя TestInput (свойство Name).
Установите свойство Text для кнопок в «Clear», «Do SQL» и «Exit».
После всех указанных действий форма должна принять вид, указанный на рисунке 3.1.
Рисунок 3.1 - Пример конечной формы
3.3.2. Добавление кода
В разделе подключаемых модулей добавьте к существующему списку модуль System.Data.OleDb;
using System.Data.OleDb;
В обработчик события OnClick кнопки Do SQL поместите код:
private void button1_Click(object sender, EventArgs e) {
try
{
OleDbConnection sqlconn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"Way…. \"");
sqlconn.Open();
OleDbDataAdapter oda = new OleDbDataAdapter(TestInput.Text, sqlconn);
DataTable dt = new DataTable();
oda.Fill(dt);
dataGridView1.DataSource = dt;
sqlconn.Close();
}
catch(Exception ex)
{ MessageBox.Show("Error");
}
}
В этом коде в «Way….» необходимо указать место, где находится БД. Например: “ D:\\temp\\BD\\HostelApp\\HostelApp\\bin\\Debug\\Hostel.mdb ”
Добавьте в обработчик события OnClick кнопки Clear:
private void button2_Click(object sender, EventArgs e)
{
TestInput.Clear();
TestInput.Text = "Select";
}
И добаьте код в обработчик события OnClick кнопки Exit:
private void button3_Click (object sender, EventArgs e)
{
this.Close();
}
3.3.3 Представление данных из таблицы
Запустите программу. Теперь введите в поле для запросов текст:
SELECT * FROM STUDENTS
Далее нажмите на кнопку Do SQL. В сетке должны появиться данные из таблицы Students (рис. 3.2). Знак * указывает, что необходимо вывести все поля из таблицы.
Рисунок 3.2 - Пример работы редактора запросов
Для уменьшения количества полей, который возвращаются можно перечислить необходимые поля вместо знака *:
SELECT SNP, Group, Room FROM STUDENTS
Можно увеличить количество полей, добавив вычислительное поле:
SELECT SNP,rooms.value*(100-Priveleges.Discount)/100 as pay, pay*12 as year_pay FROM Students, Priveleges, Rooms WHERE Students.[Privelege code] = Priveleges.[Privelege code] AND Rooms.[Room N] = Students.Room
Здесь поле pay является вычисляемым полем, которое показывает сколько студент платит за проживание за один месяц, а year_pay - за год.
Во многих случаях необходимо удалить повторяющиеся значения строк. Для этого можно использовать ключевое слово Distinct:
SELECT DISTINCT group FROM STUDENTS
Этот запрос выводит список групп, студенты которых проживают в этом общежитии. Попробуйте использовать его без DISTINCT и тогда -список увеличится.
Для ограничения количества записей, которые возвращаются, в оператор Select вводится параметр Where <булевое выражение>. Например:
SELECT * FROM rooms where flour=3
Оператор выведет все строки из таблицы rooms, в которых номер комнаты равен 3.
SELECT * FROM students where students.Group like 'ПИ%'
Этот оператор вернет данные о всех студентах, которые учатся на потоке ПИ. После слова like стоит шаблон, с которым сравниваются значения каждой записи в поле group. Символ "%" означает возможность нескольких или отсутствие символов. Можно применять символ "_", который заменяет 1 символ.
Соединение таблиц позволяет связать данные более чем из одной таблицы, которые имеют логические связи:
SELECT students.*, Priveleges.[Privelege type], Priveleges.Discount FROM Students, Priveleges WHERE Students.[Privelege Code]= Priveleges.[Privelege Code]
Этот оператор вернет всю информацию из обоих таблиц, связав записи по номеру привилегии.
Можно провести анализ данных, выполнив их группировку. Например: можно вывести количество студентов из каждой группы, проживающих в данном общежитии. Это выполняет следующий запрос:
Select group, count(SNP) from Students group by Group
Для ограничения количества результирующих групп используется параметр HAVING:
Select group, count(SNP) from Students group by Group Having Count(SNP) > 5
Данный пример выведет список групп и количество студентов из этих групп, проживающих в общежитии, для тех групп, количество в которых более 5.
Попробуйте построить свои запросы, а потом выполните те запросы, которые даст вам преподаватель.
3.4 Содержание отчета:
Отчет должен содержать: цель, задание на запросы, полученные от преподавателя, построенные команды SELECT и результат их выполнения, выводы по работе.
3.5 Контрольные задания и вопросы
1 Как реализовать запрос на выборку? Какие компоненты при этом нужно использовать!
2 Как вывести данные без повторения строк?
3 Как вывести данные из нескольких таблиц?
4 Как ввести в запрос ограничение на группы?
5 Какие булевы операторы можно использовать в предложении WHERE?
4 ПОДГОТОВКА ЗАПРОСОВ SQL С ПАРАМЕТРАМИ. МОДИФИКАЦИЯ ДАННЫХ
4.1 Цель работы
Приобретение опыта при использовании динамических запросов с задаваемыми параметрами, освоение запросов языка SQL для модификации данных.
4.2 Методические указания по организации самостоятельной работы студентов
Необходимо повторить следующий теоретический материал: элемент TableAdapter и его свойства, запросы на модификацию данных.
4.3 Порядок выполнения работы и методические указания к её выполнению
Добавьте к программе ещё одну форму (EditForm), на которой разместите объекты для добавления и изменения данных, и дайте соответствующие названия элементам формы (рисунок 4.1)
Рисунок 4.1 Форма ввода данных
Задайте источник данных для элементов типа comboBox. Для этого выберите элемент comboBox_Gender. Существует 2 способа получения доступа к элементам коллекции, которая будет представлять возможные значения в элементе comboBox. Первый способ - выбрать свойство Items, в окне Properties, и нажать на кнопку (рисунок 4.2). Второй способ нажать на стрелку в правом верхнем углу элемента, в появившемся меню выбрать пункт Edit Items (рисунок 4.3).
Рисунок 4.2 Окно свойств компонента comboBox
Рисунок 4.3 Меню компонента comboBox
В появившемся окне напишите возможные значения элемента: мужской, женский (рисунок 4.4).
Рисунок 4.4 Редактирование списка в компоненте comboBox
Для задания типа льготы, следует сделать привязку данных к таблице Priveleges. Для этого выберите элемент comboBox_Priveleges и, в меню, которое появляется при нажатии на стрелку в правом верхнем углу элемента, выберите Use data bound items. Указать значения, как показано на рисунке 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 / Use SQL Statament/ DELETE добавить запрос на удаление:
DELETE FROM Students WHERE ([Student code] = ?)
Сохранить запрос, дав ему имя DeleteQuery.
Далее следует добавить новый запрос для получения данных с параметрами в StudentsTableAdapter, для этого щелкнуть правой кнопкой мыши по StudentsTableAdapter и аналогично выполнив действия AddQuery / Use SQL Statament/ SELECT which returns rows и добавить следующий запрос.
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 Просмотр запросов для добавления и модификации данных
Теперь можно перейти к коду для работы с формой. Данная форма будет иметь два конструктора. Первый без параметров, для добавления новой записи, второй будет принимать информацию о значениях полей выбранной строки, для редактирования информации. Напишите их, предварительно объявив переменные.
/// <summary>
/// true - если запись модифицируется, false - если создаётся новая
/// </summary>
bool edit;
/// <summary>
/// id модифицируемого элемента
/// </summary>
int id;
/// <summary>
/// конструктор формы, для создания новой записи
/// </summary>
public EditForm()
{
InitializeComponent();
roomsTableAdapter.Fill(hostelDataSet.Rooms);
privelegesTableAdapter.Fill(hostelDataSet.Priveleges);
edit = false;
}
/// <summary>
/// конструктор формы, для модификации уже существующей записи
/// </summary>
/// <param name="SNP">Значение поля ФИО</param>
/// <param name="BirthDate">Значение поля Дата рождения</param>
/// <param name="Gender">Значение поля пол</param>
/// <param name="Address">Значение поля адресс</param>
/// <param name="Group">Значение поля академическа группа</param>
/// <param name="Discount">Значение поля тип льготы</param>
/// <param name="Doc">Значение поля документ</param>
/// <param name="room">Значение поля комната</param>
/// <param name="id">Первичный ключ поля</param>
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. В выпадающем меню выберите пункт Design a 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. В выпадающем меню выберите пункт Choose Report и выберите ваш созданный отчет.
Протестируйте приложение.
5.4 Содержание отчета
Отчет должен содержать: цель, задания полученные от преподавателя и результат их выполнения, выводы по работе.
5.5 Контрольные задания и вопросы
1 Расскажите про элемент MicrosoftReportViewer и его свойства.
2 Для чего нужны отчеты в базах данных?
3 Как сформировать отчет и подключить его к программе?