Среда Delphi предоставляет в распоряжение пользователя компоненты, позволяющие получить доступ к базам данных и осуществить их редактирование. Компоненты, расположенные на страницах Data Access и BDEпалитры компонентов (в дальнейшем П/К) предназначены для доступа к базам данных. Компоненты, расположенные на странице Data Controls, представляют собой элементы управления данными. Эти компоненты подобны компонентам, расположенным на страницах Standard и Additional, однако отличаются от них тем, что имеют свойства, обеспечивающие связь с полями таблицы базы данных.
Компоненты для работы с базами данных
Рис.31
В данной лабораторной работе мы будем рассматривать:
компоненты доступа к данным
- ClientDataSet - клиентский набор данных (П/К Data Access);
- Table - таблица базы данных (П/К BDE);
- Query - предназначен для доступа к базе данных посредством SQL запроса (П/К BDE);
- DataSource - источник данных (П/К Data Access);
компоненты управления данными
- DBGrid - позволяет представить таблицу базы данных в виде похожем на электронную таблицу (П/К Data Controls);
- DBNavigator - представляет собой кнопочный переключатель, посредством которого можно перемещать курсор по записям таблицы и выполнять редактирование записей (П/К Data Controls).
Рассмотрим наиболее важные свойства представленных компонентов.
Table Наиболее важными свойствами компонента являются:
· Active – данное свойство служит для получения доступа к таблице базы данных. Этому свойству присваивается значение true после установки нижеследующих свойств.
· DataBaseName – в данном свойстве указывается имя базы данных, доступ к таблице которой должен получить компонент Table. Вместо имени базы данных можно указывать ее псевдоним (алиас) или полный путь к каталогу, содержащему таблицы.
· TableName – в данном свойстве указывается конкретная таблица базы данных. При необходимости иметь в форме доступ к нескольким таблицам следует для каждой таблице определить свой компонент Table.
Компонент Query, как и компонент Table имеет свойство DataBaseName, но не имеет свойства TableName. Необходимая таблица создается автоматически при выполнении той или иной команды SQL. Свойству SQL присваивается текст одноименной команды, как при дизайне приложения, так и в процессе выполнения приложения. Для создания SQL команды в процессе дизайна приложения достаточно щелкнуть по кнопке расположенной рядом со свойством SQL в инспекторе объектов и в окне редактора команды ввести соответствующий текст SQL команды.
DataSource:
- свойство Enabled похоже на свойство Active таблицы или Connected у базы данных, т.е. делает активным или неактивным соединение;
- свойство AutoEdit, будучи включенным, обеспечивает возможность правки записей без написания какого-либо дополнительного кода;
- свойство State информирует о том, в каком состоянии в текущий момент находится источник данных;
- свойство DataSet определяет источник данных - таблицу, запрос и т.д.
DBGrid:
- DataSource, свойство, указывающее на источник данных, отображающихся в данной сетке (Grid-е).
DBNavigator:
- DataSource, свойство, указывающее на объект навигации (на таблицу, по записям которой предстоит выполнять перемещение указателя);
- + VisibleButtons – установка/удаление кнопок на навигаторе (пр умолчанию все кнопки на навигаторе видимы).
ВЫПОЛНИТЬ
Для выполнения данной работы Вы должны знать (вспомнить):
а) в какой папке сохранены таблицы (ОТДЕЛЫ, СОТРУДНИКИ и СЕМЬЯ СОТРУДНИКОВ), созданные на Лабораторной работе №3 – это должна быть папка DATA;
б) какой алиас Вы регистрировали для этой папки (Лаб№4). Если не помните алиас, то зарегистрируйте его вновь. В дальнейшем таблицы ОТДЕЛЫ, СОТРУДНИКИ и СЕМЬЯ СОТРУДНИКОВ будем называть БД «Предприятие».
1. Создать СУБД «Предприятие». В качестве компонента доступа к данным использовать компонент Table.
2. Далее пошагово описан путь создания приложения.
3. Создайте в своей личной папке папку Лабораторная_5.
4. Запустите среду Delphi и сохраните еще пустой проект в созданную папку (File à SaveProjectAs).
5. Нанесите на форму набор следующих компонентов:
- Table1, DataSource1, DBGrid1, DBNavigator1;
- Table2, DataSource2, DBGrid2, DBNavigator3.
- Table3, DataSource3, DBGrid3, DBNavigator3.
6. Активизируйте компонент Table1и в инспекторе объектов (далее И/О) для перечисленных ниже свойств установите значения:
- DataBaseName – тот алиас, который вы зарегистрировали на папку DATA (с таблицами ОТДЕЛЫ, СОТРУДНИКИ и СЕМЬЯ СОТРУДНИКОВ).
- TableName – имя таблицы ОТДЕЛЫ;
- Active à true.
7. Активизируйте компонент Table2и в инспекторе объектов для перечисленных ниже свойств установите значения:
- DataBaseName – тот алиас, который вы зарегистрировали на папку DATA (с таблицами ОТДЕЛЫ, СОТРУДНИКИ и СЕМЬЯ СОТРУДНИКОВ).
- TableName – имя таблицы СОТРУДНИКИ;
- Active à true.
8. Активизируйте компонент Table3и в инспекторе объектов для перечисленных ниже свойств установите значения:
- DataBaseName – тот алиас, который вы зарегистрировали на папку DATA (с таблицами ОТДЕЛЫ, СОТРУДНИКИ и СЕМЬЯ СОТРУДНИКОВ).
- TableName – имя таблицы СЕМЬЯ СОТРУДНИКОВ;
- Active à true.
9. Активизируйте компонент DataSource1 и в инспекторе объектов для свойства DataSet установите значениеTable1;
10. Активизируйте компонент DataSource2 и в инспекторе объектов для свойства DataSet установите значениеTable2;
11. Активизируйте компонент DataSource3 и в инспекторе объектов для свойства DataSet установите значениеTable3;
12. Активизируйте компонент DBGrid1 и в инспекторе объектов для свойства DataSource установите значениеDataSource1;
13. Активизируйте компонент DBGrid2 и в инспекторе объектов для свойства DataSource установите значениеDataSource2;
14. Активизируйте компонент DBGrid3 и в инспекторе объектов для свойства DataSource установите значениеDataSource3;
15. Активизируйте компонент DBNavigator1 и в инспекторе объектов для свойства DataSource установите значениеDataSource1;
16. Активизируйте компонент DBNavigator2 и в инспекторе объектов для свойства DataSource установите значениеDataSource2;
17. Активизируйте компонент DBNavigator3 и в инспекторе объектов для свойства DataSource установите значениеDataSource3;
18. Скомпилируйте приложение (RunàRun или F9), остановите его, и если нет ошибок, сохраните командой SaveAll.
Ранее оговаривалось, что мы имеем дело с реляционной БД, однако сами по себе таблицы никак не связаны. Сейчас приступаем к настройке механизма связывания таблиц (отношений) между собой. Внимание!!! Поля по которым настраивается связь ОБЯЗАТЕЛЬНО должны быть проиндексированы (толи первичный ключ, то ли вторичный индекс).
ПРАВИЛО. Связь всегда настраивается ОТподчиненной таблице (detail-отношение) К главной таблице (master-отношение).
Обратите внимание на логическую схему БД «Предприятие». Таблица «СОТРУДНИКИ» подчинена таблице «ОТДЕЛЫ», т.е. связь будет настраиваться от таблицы «СОТРУДНИКИ» à«ОТДЕЛЫ» по полям Отдел à Отдел соответственно.
Таблица «СЕМЬЯ СОТРУДНИКА» подчинена таблице«СОТРУДНИКИ», т.е. связь будет настраиваться от таблицы «СЕМЬЯ СОТРУДНИКА» «СОТРУДНИКИ» à «СОТРУДНИКИ» по полям ИД à №ПП соответственно.
ОТДЕЛЫ
СОТРУДНИКИ
СЕМЬЯ СОТРУДНИКА
Отдел
№ П/П
№ П/П
Телефон
ФИО сотрудника
Статус
Руководитель
Год рождения
ФИО
Отдел
Год рождения
ИД
Структурная схема БД «Предприятие»
19. Выберите компонент Table2 (таблица«СОТРУДНИКИ») и в И/О вы берите:
- свойство MasterSource à DataSource1;
- свойство MasterFields à … ;
Свойство MasterFields дает возможность связать между собой таблицы по нужным полям (это действие ещё называют связывание курсоров). Ниже представлен рисунок, показывающий последовательность настраивания связи между двумя таблицами: master (главная)и detail (подчиненная).
Описание рисунка. 1-2. В окне индексов Available Indexes выбирается индекс ПОДЧИНЕННОГО поля. 3. Этот индекс автоматически вносится в поле DetailFields. Затем мышкой выбирается поле связи главной (Master) таблицы и нажимается кнопка Add . 4. После добавления связки в поле JoinedField окно Мастера связи закрывается командой подтверждения ОК.
20. Следующий шаг – это соединение таблиц «СЕМЬЯ СОТРУДНИКА» - Detail и «СОТРУДНИКИ»- Master, поля связи для этих таблиц ИД и №ПП соответственно. Не забудьте, что эти поля должны иметь индексы!!! Поле №ПП в соответствии с правилами создания структуры таблиц в формате Paradox долино быть ключевым – Primery, а вот для поля ИД должен быть установлен вторичный индекс.
21. Далее, по аналогии с пунктом 20 настройте связь между таблицами «СЕМЬЯ СОТРУДНИКА» и «СОТРУДНИКИ».
22. Скомпилируйте приложение (RunàRun или F9), остановите его, и если нет ошибок, сохраните командой SaveAll.
23. Вновь запустите приложение и попробуйте заполнить строки в таблицах.