Лабораторная работа №2 / БДлаб2.doc
Лабораторная работа № 2
Использование таблиц и компонентов
отображения данных в системе Delphi
Цель работы: научиться разрабатывать приложения с использованием компонентов, обеспечивающих доступ к данным и отображение данных, хранящихся в базе данных.
Продолжительность работы - 4 ч.
Теоретические сведения
Компоненты, предназначенные для работы с базами данных
Создание приложения для работы с БД не отличается от разработки любого другого приложения в системе Delphi: в одну или несколько форм помещаются компоненты, которые настраиваются надлежащим образом, чтобы выполнять требуемые действия.
Компоненты для работы с БД реализуют наиболее употребимые функции и позволяют конструировать интерфейс и подключать приложения к данным практически без написания программного кода. В палитре компонентов на странице Data Access сгруппированы компоненты доступа к данным, а на странице Data Controls - компоненты отображения и управления данными.
Приложение, работающее с БД, обычно имеет в своем составе три вида компонентов (рис.1): во-первых, компонент типа TTable или TQuery для связи с BDE и через него с БД; во-вторых, компонент типа TDataSource для соединения используемых приложением наборов данных с визуальными компонентами пользовательского интерфейса; в-третьих, визуальные компоненты для создания такого интерфейса. Количество компонентов и их взаимодействие определяются используемыми данными и решаемыми задачами.
Механизм взаимодействия компонентов с БД таков, что уже в процессе создания приложения можно использовать данные без предвари-
Приложение
Визуальные компоненты (отображающие
данные и управляющие ими)
TDBEdit TDBGrid . . . TDBNavigator
Компоненты доступа к данным
TDataSource TDataSource
TTable TQuery
БД Borland Database Engine (BDE)
|
тельной компиляции проекта. Для создания приложений может использоваться Database Form Wizard (Мастер форм БД) - интерактивное приложение для создания различных форм, предназначенных для отображения данных.
Компоненты, предназначенные для работы с БД, и их важнейшие свойства рассмотрим на примере приложений, создаваемых с помощью Мастера форм БД.
Использование Мастера форм БД
Мастер форм позволяет быстро создавать различные типы форм для приложений, работающих с БД. Среди них формы типа ввод/редактирование, сетка, главная таблица/подчиненная таблица. Вместе с интерфейсом таких форм, который может содержать различные визуальные компоненты отображения данных, Мастер форм автоматически размещает в окне создаваемой формы все необходимые компоненты связи с данными и определяет их важнейшие свойства в соответствии с требованиями разработчика. Вызов Мастера форм осуществляется командой Database | Form Wizard главного меню Delphi.
Процесс создания новой формы происходит в интерактивном режиме. В нескольких открывающихся одно за другим окнах Мастера форм БД разработчик должен определить ряд параметров, которые используются при создании интерфейса формы и связывании данных из требуемых таблиц с визуальными компонентами. Перемещение по окнам Мастера производится при помощи кнопок Next и Prev.
Первое окно (рис.2) содержит две группы опций. Группа Form Options позволяет выбрать тип создаваемой формы: Create a simple form создает форму типа сетка или ввод/редактирование, в которой отображаются данные из одной таблицы в визуальных компонентах типа TDBGrid или TDBEdit соответственно; Create a master/detail form создает форму типа главная/подчиненная, в которой отображаются данные из двух связанных между собой таблиц в выбранных визуальных компонентах. Группа DataSet Options предназначена для выбора компонента, обеспечивающего доступ к данным.
Второе окно (рис.3) запрашивает имя и спецификацию файла, содержащего таблицу с необходимыми данными. Интерфейс окна совпадает со стандартным диалогом открытия файла.
Третье окно (рис.4) предназначено для определения тех полей выбранной ранее таблицы, которые должны отображаться в создаваемой форме. Здесь расположены два списка и управляющие кнопки, которые позволяют перемещать имена полей между списками и изменять их порядок следования (только для правого списка).
Список Available Fields первоначально содержит имена всех полей из выбранной таблицы. Список Ordered Selected Fields включает имена тех полей, которые необходимо отображать в форме в заданном порядке.
Четвертое окно (рис.5) определяет способ расположения отображаемых полей выбранной таблицы для создания форм типа ввод/редактирование или сетка.
В форме типа ввод/редактирование отдельные поля одной строки таблицы БД располагаются либо горизонтально, либо вертикально. Горизонтальный способ (Horizontally) предполагает построчное расположение полей в форме, друг за другом, начиная с левого верхнего угла формы. Вертикальный способ (Vertically) задает размещение полей по одному в каждой строке формы, одно под другим; выравнивание проводится по левой стороне формы. Форма типа сетка (In a grid) отображает данные в стандартном табличном виде. Выбор типа формы осуществляется радиокнопкой; при этом в левом верхнем углу окна появляется пиктограмма с соответствующим видом расположения полей.
При создании формы типа главная/подчиненная второе, третье и четвертое окна появляются дважды. Сначала необходимо задать в этих окнах параметры для главной таблицы, затем - для подчиненной таблицы. Главная и подчиненная таблицы соединяются посредством связывания одноименных или одинаковых по смыслу полей, имеющихся в этих таблицах. Соединение таблиц выражается в том, что одной строке главной таблицы соответствуют N строк подчиненной таблицы (N>=0). Соответствие строк устанавливается по равенству значений, хранящихся в связанных полях этих строк. В подчиненной таблице все N строк, соответствующие одной строке главной таблицы, должны быть сгруппированы вместе. Группировка строк обеспечивается при создании индекса для подчиненной таблицы и происходит в результате логической сортировки строк таблицы по значениям индексного ключа. В состав индексного ключа входят поля подчиненной таблицы, связанные с полями главной таблицы.
Пятое окно (рис.6) появляется только при создании формы типа главная/подчиненная и предназначено для связывания полей двух таблиц. В разворачивающемся списке Available Indexes необходимо выбрать нужный индекс (индексный ключ). Этот выбор влияет на содержимое списка Detail Fields, в котором размещены имена полей подчиненной таблицы, доступные для связывания. Поля главной таблицы содержатся в списке Master Fields. Далее необходимо задать связи между полями главной и подчиненной таблиц. Для этого следует пометить пару нужных полей в двух списках при помощи мыши и установить связь между ними, используя кнопку Add. После этого связанные поля отображаются в списке Joined Fields. Этот список можно редактировать кнопками Delete и Clear. Подобным образом необходимо установить все намеченные связи.
Шестое окно определяет, будет ли создаваемая форма главной формой приложения. После нажатия кнопки Create начинается генерация формы с установленными ранее свойствами. Одновременно с формой, параметры которой определены в ходе диалога с Мастером форм БД, генерируется соответствующий код на языке Object Pascal.
Создание приложений и изучение свойств компонентов
Задание 1. С помощью Мастера форм БД создать приложение с формой типа сетка для просмотра таблицы PARTS.DB из БД DBDEMOS, содержащей информацию о поставках изделий. Проверить работу приложения и ознакомиться со свойствами компонентов, помещенных в форму Мастером форм БД.
Пояснение к заданию 1. Мастер форм помещает в форму компоненты Table1 и DataSource1 для доступа к данным, компонент DBGrid1 для отображения данных из PARTS.DB в стандартном табличном виде (в виде сетки) и компонент DBNavigator для управления данными. В табл.1 приведены значения важнейших свойств используемых компонентов, автоматически установленные Мастером форм; при разработке приложения вручную их должен задать программист.
Таблица 1
Свойства компонентов для задания 1
| Свойство | Значение | Примечание |
| Table1 : TTable | ||
| Active | False | Управляет открытием таблицы |
| DatabaseName | DBDEMOS | Спецификация каталога или псевдоним БД |
| Name | Table1 | Имя компонента |
| TableName | parts.db | Имя файла с таблицей |
| DataSource1 : TDataSource | ||
| AutoEdit | True | Автоматически задает состояние Edit для набора данных при начале редактирования данных |
| DataSet | Table1 | Имя компонента, через который передаются данные из БД и в БД |
| Name | DataSource1 | Имя компонента |
| DBGrid1 : TDBGrid | ||
| DataSource | DataSource1 | Имя компонента, через который осуществляется обмен и управление данными |
| Name | DBGrid1 | Имя компонента |
| DBNavigator : TDBNavigator | ||
| DataSource | DataSource1 | Имя компонента, через который осуществляется обмен и управление данными |
| Name | DBNavigator | Имя компонента |
| VisibleButtons | [nbFirst,nbPrior,..., nbRefresh] | Список используемых кнопок навигатора |
Свойство Active компонента Table1, управляющее открытием таблицы, может устанавливаться вручную в окне инспектора объектов или программно методами Open (соответствует Active=True) и Close (соответствует Active=False). При установке свойства Active=True содержимое открытой таблицы появляется на экране в визуальном компоненте, отображающем данные. Следует запомнить, что для компонента типа TTable значения свойств DatabaseName и TableName доступны для изменения только при Active=False.
Компонент типа TBDNavigator (навигатор) управляет данными, отображаемыми в визуальных компонентах, использующих одноименный компонент типа TDataSource. Управление осуществляется с помощью кнопок навигатора (рис.7). Наличие конкретной кнопки задается в свойстве VisibleButtons установкой соответствующего идентификатора nbXxx в значение True (есть кнопка) или False (нет кнопки).
При создании приложения без использования Мастера форм программисту после размещения необходимых компонентов в рабочем поле формы надо устанановить связь между компонентами, выполнив следующую последовательность действий:
1) задать спецификацию используемого каталога или псевдоним БД в свойстве DatabaseName компонента типа TTable;
2) задать в свойстве TableName компонента типа TTable имя файла, содержащего нужную таблицу. Имя файла выбирается из списка, который появляется при нажатии кнопки, расположенной в строке инспектора объектов, соответствующей свойству TableName;
3) в свойстве Dataset компонента типа TDataSource задать имя используемого компонента типа TTable. Значение свойства Dataset выбирается из списка аналогично тому, как выбиралось имя файла в п.2;
4) задать в свойстве DataSource визуального компонента, отображающего данные или управляющего данными (в задании 1 это компоненты типа TDBGrid и TDBNavigator), имя компонента типа TDataSource, через который осуществляется обмен и управление данными. Значение свойства DataSource выбирается из списка аналогично тому, как выбиралось имя файла в п.2.
Задание 2. С помощью Мастера форм БД создать приложение с формой типа ввод/редактирование для просмотра таблицы EMPLOYEE.DB из БД DBDEMOS, содержащей информацию о служащих. Проверить работу приложения и ознакомиться со свойствами компонентов, помещенных в форму Мастером форм БД.
Пояснение к заданию 2. В форме, созданной Мастером форм, для отображения значений полей текущей записи используются компоненты типа TDBEdit, которые связаны с компонентом DataSource1 через свои свойства DataSource. Имя поля, значение которого отображается в компоненте типа TDBEdit, задается свойством DataField этого компонента. Надписи к полям задаются компонентами типа TLabel.
Задание 3. С помощью Мастера форм БД создать приложение с формой типа главная/подчиненная для просмотра таблицы CUSTOMER.DB и связанной с ней таблицы из БД DBDEMOS, в которых содержится информация о компаниях-покупателях и сделанных заказах. Информацию из каждой таблицы отобразить в компоненте типа TDBGrid. Проверить работу приложения и ознакомиться со свойствами компонентов, помещенных в форму Мастером форм БД.
Пояснение к заданию 3. Мастер форм помещает в форму для каждой таблицы свой комплект компонентов типа TTable, TDataSource, TDBGrid для доступа к данным и их отображения, а также один компонент типа TDBNavigator для управления данными, хранящимися в главной таблице CUSTOMER.DB. В табл.2 приведены значения важнейших свойств используемых компонентов, автоматически установленные Мастером форм; при разработке приложения вручную их должен задать программист.
При создании приложения без использования Мастера форм программисту необходимо выполнить следующую последовательность действий:
1) разместить в форме для каждой из связанных таблиц по одному комплекту из трех компонентов, обеспечивающих доступ, управление и отображение данных;
2) задать свойства компонентов из комплекта для главной таблицы (см. табл.2);
3) задать свойства компонентов из комплекта для подчиненной таблицы, установив связь между полями связанных таблиц (см. табл.2);
4) разместить навигатор и связать его с главной таблицей.
Примечание. Для связи подчиненной таблицы с главной таблицей можно использовать конструктор связанных полей (Field Link Designer), который вызывается из инспектора объектов нажатием кнопки, расположенной в строке свойства MasterFields. Окно конструктора имеет вид, подобный показанному на рис.6, и позволяет выбрать нужный индекс (индексный ключ) и установить связь между полями подчиненной (detail) и главной (master) таблиц.
Задание 4. Приложение, созданное при выполнении задания 3, дополнить компонентами, обеспечивающими доступ, управление и отображение данных из таблицы ITEMS.DB, и связать эту таблицу в качестве подчиненной с таблицей ORDERS.DB. Проверить работу приложения, которое должно отображать данные из трех связанных таблиц.
Пояснение к заданию 4. Чтобы в рабочем поле формы появилось свободное место для размещения дополнительных компонентов, нужно увеличить размер формы, а для компонентов типа TDBGrid задать значение свойства Align=alNone и уменьшить высоту этих компонентов.
Таблица 2
Свойства компонентов для задания 3
| Свойство | Значение | Примечание |
| Table1: TTable (главная таблица) | ||
| Active | False | Управляет открытием таблицы |
| DatabaseName | DBDEMOS | |
