Порядок выполнения работы

Практическое занятие № 23

Формирование выходной информации

Цель: Приобрести практические навыки по созданию клиентского приложения WINDOWSFORMS, взаимодействующего с таблицами базы данных, реализующими отношение M:N

 

 

ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ

 

 

Связь между двумя таблицами с отношением M:N реализуется в реляционной модели данных через третью таблицу-связку.

 

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

 

1. Добавить в БД PERSONAL новую таблицу COURSE для хранения информации о курсах повышения квалификации сотрудников:

 

Таблица COURSE

 

Поле Тип данных Разрешить NULL Назначение
ID int нет Первичный ключ
NAME nvarchar(200) нет Наименование курса повышения квалификации
ABOUT nvarchar(1000) да Описание курса повышения квалификации

 

 

Записи таблицы COURSE связаны отношением M:N с таблицей PERSONAL (одни курсы повышения квалификации могут проходить несколько сотрудников, и один сотрудник может обучаться на разных курсах).

2. Для реализации данного отношения добавить в БД новую таблицу-связку TRAINING. Эта таблица предназначена хранения информации о прохождении курсов повышения квалификации нашими сотрудниками:

 

Таблица TRAINING

 

Поле Тип данных Разрешить NULL Назначение
DATE_BEG smalldatetime да Дата начала курсов
DATE_END smalldatetime да Дата окончания курсов
DOCUM nvarchar(50) да Выдаваемый документ по окончанию курсов
LENGTH_CRS int да Длительность курсов в учебных часах
COST money да Стоимость курса
FULLTIME bit да Очное/Заочное обучение
PERS_CODE int нет Внешний ключ на таблицу PERSONAL
COURSE_CODE int нет Внешний ключ на таблицу COURSE

 

В таблице TRAINING будет составной первичный ключ, включающий поля PERS_CODE,

 

COURSE_CODE.

 

После внесения всех изменений схема данных будет иметь вид:

 

 

 

Рис. 1

 

 

3. После завершения операций по изменению структуры БД, открыть приложение из предыдущего практического занятия.

В окне Data Source откройте конфигурацию для набора данных PERSONALDataSet (Рис. 2).


 

Рис. 2

 

 

Проставьте галочки напротив новых таблиц БД для их добавления в PERSONALDataSet. После завершения конфигурации у нашего PERSONALDataSet должна отобразится следующая схема данных (Рис. 3):

 

Рис. 3

 

4. Откройте основную форму (с меню) и добавьте новый подпункт в меню «Справочники» - «Курсы»:

 


 

Рис. 4

 

Создайте новую форму для справочника курсов (Рис. 5).

 

Рис. 5

 

 

Для подключения элементов интерфейса основной формы (Form1) к таблице COURSE, для начала необходимо разместить на форме (Form1) объект bindingSource из ToolBox. Установите для него следующие значения свойств (Рис. 6):

 


 

 

Рис. 6

 

Программный код для соответствующего пункта меню основной формы - отображения окна справочника «Курсы повышения квалификации»:

 

 

Разместите на форме Form1 с панели инструментов Toolbox компонент groupBox1 с заголовком «Прохождение курсов повышения квалификации» (свойство Text).

 

Выберете в окне Data Sources для таблицы TRAINING внутри таблицы PERSONAL (Рис. 7) форму представления данных DataGridView (чтобы показывались данные о пройденных курсах сотрудником организации):

 


 

Рис. 7

 

И перенесите, удерживая левую кнопку мыши, на groupBox1. В результате получится форма (Рис. 8).

 

Рис. 8

 

 


Обратите внимание, что BindingNavigator для таблицы TRAINING не был размещен.

 

Добавим его сами. Для этого выделите pERSONALBindingNavigator на нашей главной форме и нажмите на нем правую кнопку мыши - выберете команду копировать (Copy).

 

Затем на groupBox1 нажмите правую кнопку мыши и выберете команду вставить (Paste). В результате будет добавлен bindingNavigator1. Для bindingNavigator1 укажите:

 

- свойство Name в tRAININGBindingNavigator;

 

- в свойстве BindingSource укажите tRAININGBindingSource для привязки к таблице

 

TRAINING (Рис. 9):

 

 

Рис. 9

 

Для кнопки сохранения добавленного нами tRAININGBindingNavigator введите следующий код:

 

 

В окне основной формы Form1 выделите невизуальный объект tableAdapterManager (Рис. 10). TableAdapterManager — это компонент, который предоставляет функции сохранения данных в соответствующих таблицах данных. TableAdapterManager использует связи внешнего ключа, которые связывают таблицы данных для определения правильного порядка отправки команд

 

 


Insert, Update и Delete из набора данных в базу данных без нарушения ограничения внешнего ключа (ссылочная целостность) в базе данных.

 

Рис. 10

 

Так как в основном окне мы теперь будем редактировать данные из двух таблиц PERSONAL и TRAINING, необходимо для объекта tableAdapterManager указать соответствующие адаптеры таблиц (Рис. 11):

 

Рис. 11

 

Запустите программу и посмотрите, как отображаются данные в новой таблице на форме. Обратите внимание, что показываются курсы, на которых обучался только выбранный сотрудник (Рис. 12):

 

 


 

Рис. 12

 

Оформим tRAININGDataGridView (Edit Columns):

 

1) добавим заголовки колонок на русском языке;

 

2) уберем колонку PERS_CODE – это служебное поле внешнего ключа (будет заполняться автоматически);

 

3) для поля DOCUMENT (Выдаваемый документ по окончанию курсов) укажите тип колонки: DataGridViewComboBoxColumn (Рис. 13) и DisplayStyle = Nothing.

 

 

Рис. 13

 

 


В свойстве Items укажите:

 

 

Рис. 14

 

Теперь в приложении это поле будет выглядеть так (Рис. 15):

 

 

Рис. 15

 


4) для поля COST (Стоимость курса) укажите денежный формат – свойство DefaultCellStyle (Рис. 16):

 

Рис. 16

 

Теперь в приложении это поле будет выглядеть так (Рис. 17):

 

 

Рис. 17

 


6) к полю COURSE_CODE (Внешний ключ на таблицу COURSE) подключим таблицу COURSE (Курсов), чтобы пользователь мог выбрать курс из соответствующий таблицы БД.

 

Для поля COURSE_CODE укажите тип колонки: DataGridViewComboBoxColumn, DisplayStyle = Nothing и установите следующий набор свойств (эти свойства аналогичны тем, что мы использовали в предыдущей работе для оформления выпадающего списка для поля «Отдел»):

 

 

Рис. 18

 

Теперь в приложении это поле будет выглядеть так (Рис. 19):

 

 

Рис. 19

 

 














Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: