- •1. Создание таблиц базы данных
- •1.1. Описание полей
- •1.2. Задание индексов
- •1.3. Задание ограничений на значения полей
- •1.4. Задание ссылочной целостности
- •1.5. Задание паролей
- •1.6. Задание языкового драйвера
- •1.7. Задание таблицы для выбора значений
- •1.5. Изменение структуры таблицы
- •2. Создание приложения
- •2.1. Приложение с одной формой
- •1.8. Просмотр списка подчиненных таблиц
- •2.2. Использование в приложениях модуля данных
2.2. Использование в приложениях модуля данных
При конструировании формы невизуальные компоненты, используемые для доступа к данным, такие как Datasource или Table, размещаются на форме, но при выполнении приложения эти компоненты не видны. Поэтому их можно размещать в любом удобном месте формы, выступающей для них контейнером — модулем. Кроме того, для размещения невизуальных компонентов, через которые осуществляется доступ к данным, предназначен специальный объект — модуль данных.
Существует три типа модуля данных:
простой модуль данных;
удаленный модуль данных;
Web-модуль.
Ниже рассматривается простой модуль данных, который представлен объектом DataModule. Использование удаленного модуля данных и Web-модуля изучается при рассмотрении трехуровневых приложений и публикации БД в Интернете.
Если применяется простой модуль данных, то взаимосвязь компонентов приложения и таблицы БД имеет вид, показанный на рис. 5.15.
Рис. 5.15. Взаимосвязь компонентов приложения и таблицы БД
при использовании модуля данных
Модуль данных, как и форма, является контейнером для своих невизуальных компонентов, и для него создается модуль кода с расширением PAS. Добавление модуля данных к проекту выполняется командой File/New/DataModule главного меню Delphi. В окне модуля компоненты размещаются таким же образом, как и на форме (рис. 5.20). При выборе объекта в Инспекторе объектов отображаются его свойства, значения которых можно просматривать и изменять.
Рис. 5.20. Модуль данных
При обращении к содержащимся в модуле данных компонентам для них указывается составное имя, в которое, кроме имени компонента, входит также имя модуля данных. Составное имя имеет формат
<Имя модуля данных>.<Имя компонента>
Ниже приводится пример кода, в котором осуществляется обращение к компонентам модуля данных.
procedure TForml.FormCreate(Sender: TObject);
begin
DataModule2.Tablel.DatabaseName: ='dbdemos' ;
DataModule2.Tablel.TableName: ='clients.dbf' ;
DataModule2.DataSourcel.DataSet:=DataModule2.Tablel;
DBGridl.DataSource:=DataModule2.DataSourcel;
DBNavigatorl.DataSource:=DataModule2.DataSourcel;
DataModule2.Tablel.Active:=true;
end;
Для компонентов выполняется установка значений свойств, связывающих между собой эти компоненты и таблицу БД. Значения свойств устанавливаются динамически в процессе выполнения приложения, для чего использован обработчик события создания главной формы приложения. В составных именах компонентов доступа к данным, которыми являются источник данных DataSourcel и набор данных Tablel, указывается имя модуля данных DataModule2.
Чтобы обеспечить возможность доступа к компонентам модуля данных в модуле формы, в список uses раздела implementation необходимо включить ссылку на модуль данных:
uses unit2;
Ссылку на другой модуль можно написать самостоятельно, но Delphi дает возможность вставить ее автоматически. При выборе команды File/Use Unit... появляется диалоговое окно Use Unit (рис. 5.21). После выбора нужного модуля и нажатия кнопки ОК он добавляется в список.
Рис. 5.21. Окно выбора модуля
Если ссылка на требуемый модуль отсутствует, но в коде используется имя модуля данных, то при компиляции приложения появляется диалоговое окно Information (рис. 5.22). В нем сообщается о том, что форма ссылается на другую форму, объявленную в модуле, отсутствующем в списке uses формы. Для автоматического добавления модуля в список достаточно нажать кнопку Yes.
Рис. 5.22. Диалог добавления модуля в список uses
Помимо компонентов доступа к данным, которыми являются session, Database, Table, Query, storedProc, BatchMove и др., в модуле данных можно размещать также невизуальные компоненты, не имеющие прямого отношения к БД, например, ImageList, OpenDialog или Timer.
Замечание
При работе с модулем данных в Палитре компонентов доступны только неви-зуальные компоненты.
Модуль данных позволяет:
отделить управление БД от обработки данных;
создать модуль, совместно используемый несколькими приложениями.
Основным назначением модуля данных является централизованное хранение компонентов доступа к данным, а также кода для этих компонентов, в частности, обработчиков событий. В модуле данных удобно размещать код, выполняющий управление БД, например, реализацию бизнес-правил.
Использование простого модуля данных несколькими приложениями позволяет ускорить разработку приложений, т. к. готовый модуль данных впоследствии можно включать в новые приложения. Кроме того, управление БД через общий модуль дает возможность определить для всех пользователей одинаковые режимы и правила работы с базой, а также делает более простым изменение этих режимов и правил.
Однако для небольших приложений использование простого модуля данных не всегда оправдано, т. к. может затруднить, а не облегчить разработку приложения.
Удаленный модуль данных предназначен для работы с удаленными БД в трехуровневой архитектуре "клиент-сервер" и используется для создания сервера приложения — промежуточного уровня между приложением и сервером БД. Удаленный модуль данных будет рассмотрен в теме 3.
Web-модуль предназначен для работы с БД в сети Интернет и является посредником между браузером (программой просмотра Web-документов) и сервером БД. Использование Web-модуля будет рассмотрено в теме 4.
