- •1. Создание таблиц базы данных
- •1.1. Описание полей
- •1.2. Задание индексов
- •1.3. Задание ограничений на значения полей
- •1.4. Задание ссылочной целостности
- •1.5. Задание паролей
- •1.6. Задание языкового драйвера
- •1.7. Задание таблицы для выбора значений
- •1.5. Изменение структуры таблицы
- •2. Создание приложения
- •2.1. Приложение с одной формой
- •1.8. Просмотр списка подчиненных таблиц
- •2.2. Использование в приложениях модуля данных
1.8. Просмотр списка подчиненных таблиц
Таблица, связанная с другими таблицами, является либо главной, либо подчиненной. Выше мы рассмотрели задание ссылочной целостности для подчиненной таблицы. Для главной таблицы можно просмотреть список подчиненных таблиц, отображаемый при выборе пункта Dependent Table (Подчиненная таблица) все того же комбинированного списка Table Properties (см. рис. 5.2). Этот список содержит имена всех таблиц, имеющих условия ссылочной целостности с участием данной таблицы.
1.5. Изменение структуры таблицы
Структуру существующей таблицы можно изменить, выполнив команду Table/Restructure... после предварительного выбора таблицы в окне программы Database Desktop. В результате открывается окно определения структуры таблицы, и дальнейшие действия не отличаются от действий, выполняемых при создании таблицы.
Замечание
При изменении структуры таблицы с ней не должны работать другие приложения, в том числе Delphi. Поэтому предварительно необходимо закрыть Delphi или приложение, в котором компоненты Table связаны с перестраиваемой таблицей. Другим вариантом является отключение активности компонентов Table, связанных с перестраиваемой таблицей, для чего свойству Active этих компонентов через Инспектор объектов устанавливается значение False.
Переименование таблицы следует выполнять из среды программы Database Desktop, а не из среды Windows, например, с помощью Проводника. Для этого при работе со структурой таблицы можно нажать кнопку Save as... и задать новое имя таблицы. В результате в указанном каталоге диска появятся все необходимые файлы таблицы. При этом старая таблица также сохраняется. Информация о названии таблицы используется внутри ее файлов, поэтому простое переименование всех файлов таблицы приведет к ошибке при попытке доступа к ней.
Если необходимо просто ознакомиться со структурой таблицы, то выполняется команда Table/Into Structure.... В результате появляется окно определения структуры таблицы, но элементы, с помощью которых в структуру таблицы могут быть внесены изменения, заблокированы. Просмотр структуры возможен также для таблицы, с которой связаны другие приложения.
2. Создание приложения
Для примера рассмотрим создание приложения, позволяющего перемещаться по записям таблицы БД, просматривать и редактировать поля, удалять записи из таблицы, а также вставлять новые. Файл проекта приложения обычно не требует от разработчика выполнения каких-либо действий. Поэтому при создании приложения главной задачей является конструирование форм, в простейшем случае — одной формы.
2.1. Приложение с одной формой
Вид формы приложения на этапе проектирования показан на рис. 5.16, где на форме размещены компоненты Tablel, DataSourcel, DBGridl и DBNavigatorl.
Компонент Tablel обеспечивает взаимодействие с таблицей БД. Для связи с требуемой таблицей нужно установить соответствующее значение свойствам DataBaseName, указывающему путь к БД, и TableName, указывающему имя таблицы. После задания таблицы для открытия набора данных свойству Active должно быть установлено значение True.
Рис. 5.16. Форма приложения для работы с БД
Замечание
Значение True свойству Active нужно устанавливать после задания таблицы БД, т. е. после установки нужных значений свойств DataBaseName и TableName.
Имя таблицы лучше выбирать из раскрывающегося списка в поле значения свойства TableName. Если путь к БД (свойство DataBaseName) задан правильно, то в этом списке отображаются главные файлы всех доступных таблиц.
В рассматриваемом приложении использована таблица клиентов, входящая в состав поставляемых с Delphi примеров, ее главный файл — clients.dbf. Файлы этой и других таблиц примеров находятся в каталоге, путь к которому указывает псевдоним dbdemos.
Компонент DataSource1 является промежуточным звеном между компонентом Table1, соединенным с реальной таблицей БД, и визуальными компонентами DBGrid1 и DBNavigatorl, с помощью которых пользователь взаимодействует с этой таблицей. На компонент Table1, с которым связан компонент DataSourcel, указывает свойство DataSet последнего.
Компонент DBGridl отображает содержимое таблицы БД в виде сетки, в которой столбцы соответствуют полям, а строки — записям таблицы. По умолчанию пользователь может просматривать и редактировать данные. Компонент DBNavigatorl позволяет пользователю осуществлять перемещение по таблице, редактировать, вставлять и удалять записи. Компоненты DBGridl и DBNavigatorl связываются со своим источником данных — компонентом DataSourcel — через свойства DataSource.
Взаимосвязь компонентов приложения и таблицы БД и используемые при этом свойства компонентов показаны на рис. 5.17.
При разработке приложения значения всех свойств компонентов можно задать с помощью Инспектора объектов. При этом требуемые значения либо непосредственно вводятся в поле, либо выбираются из раскрывающихся списков. В последнем случае приложение создается с помощью мыши и не требует набора каких-либо символов с клавиатуры. В табл. 5.1 приведены компоненты, используемые для работы с таблицей БД, основные свойства и их значения.
Рис. 5.17. Взаимосвязь компонентов приложения и таблицы БД
Таблица 5.1
Значения свойств компонентов
Компонент |
Свойства |
Значения |
Tablel |
DataBaseName TableName Active |
dbdemos clients.dbf true |
DataSourcel |
DataSet |
Tablel |
DBGridl |
DataSource |
DataSourcel |
DBNavigatorl |
DataSource |
DataSourcel |
Рис. 5.18. Окно Database Form Wizard
В дальнейшем при организации приложений предполагается, что названные компоненты связаны между собой именно таким образом, и свойства, с помощью которых эта связь осуществляется, не рассматриваются.
Для автоматизации процесса создания формы, использующей компоненты для операций с БД, можно вызвать Database Form Wizard (Мастер форм баз данных), показанный на рис. 5.18. Этот Мастер расположен на странице Business Хранилища объектов.
Мастер позволяет создавать формы для работы с отдельной таблицей и со связанными таблицами, при этом можно использовать наборы данных Table или Query.
