Лабораторная
 

Лабораторная работа № 2

Использование таблиц и компонентов
отображения данных в системе Delphi

Цель работы: научиться разрабатывать приложения с использованием компонентов, обеспечивающих доступ к данным и отображение данных, хранящихся в базе данных.

Продолжительность работы - 4 ч.

Теоретические сведения

Компоненты, предназначенные для работы с базами данных

Создание приложения для работы с БД не отличается от разработки любого другого приложения в системе Delphi: в одну или несколько форм помещаются компоненты, которые настраиваются надлежащим образом, чтобы выполнять требуемые действия.

Компоненты для работы с БД реализуют наиболее употребимые функции и позволяют конструировать интерфейс и подключать приложения к данным практически без написания программного кода. В палитре компонентов на странице Data Access сгруппированы компоненты доступа к данным, а на странице Data Controls - компоненты отображения и управления данными.

Приложение, работающее с БД, обычно имеет в своем составе три вида компонентов (рис.1): во-первых, компонент типа TTable или TQuery для связи с BDE и через него с БД; во-вторых, компонент типа TDataSource для соединения используемых приложением наборов данных с визуальными компонентами пользовательского интерфейса; в-третьих, визуальные компоненты для создания такого интерфейса. Количество компонентов и их взаимодействие определяются используемыми данными и решаемыми задачами.

Механизм взаимодействия компонентов с БД таков, что уже в процессе создания приложения можно использовать данные без предвари-

Приложение

Визуальные компоненты (отображающие

данные и управляющие ими)

 

TDBEdit   TDBGrid . . . TDBNavigator

 

Компоненты доступа к данным

 

TDataSource TDataSource

 

TTable TQuery


БД Borland Database Engine (BDE)

Рис.1. Компоненты, используемые для работы с базами данных

 
 

тельной компиляции проекта. Для создания приложений может использоваться 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