logo search
Разработка и внедрение системы анализа и статистики данных

2.6.6 Создание контейнера TDataModule

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

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

Для всех экранных и отчетных форм необходим доступ (связь) к БД. Причем когда СУБД имеет несколько экранных форм их доступ к БД можно осуществить двумя способами.

1. Доступ каждой формы (и ее компонентов) к БД можно осуществить автономно, независимо от остальных форм.

2. Второй способ предполагает не повторять для каждой формы организацию доступа к БД, а для всех экранных и отчетных форм организовать единый доступ через специальный компонент типа TDataModule. Компонент типа TDataModule представляет собой контейнер, в который можно помещать невизуальные компоненты TTable, TQuery, DataSource, которые необходимы для доступа к БД и т.д. Тогда все те формы, для которых потребуется доступ к БД, доступ получат через компонент TdataModule. Поэтому при создании СУБД для каждой экранной формы необходимо установить связь с компонентой типа TdataModule.

Таким образом, для работы СУБД необходимо создать компонент типа TDataModule.

Создание экземпляра TDataModule в среде Delphi осуществляется через пункт меню File|New Data Module.

Компонент TDataModule служит контейнером компонентов для работы с базами данных. В палитре компонентов Delphi на странице Data Access выберем мышью невизуальный компонент ТТаblе (рис. 20), щелкнем на нем мышью и затем щелкнем мышью в контейнере. После этого, изображение компоненты останется в контейнере.

Рис. 20. Палитра компонентов Delphi

Невизуальным компонент TTable (как и другие компоненты, например, TQuery, TDataSource) называется потому, что он применяется для хранения и доступа к данным, а не для их визуализации - для этой цели применяются визуальные компоненты (TDBGrid, TEdit и другие).

После того, как мы разместили компонент TTable, установим его свойства. Для этой цели воспользуемся инспектором объектов (Object Inspector), который обычно помещается слева от формы. Если он не видим, его можно вызвать, нажав кнопку F11. Инспектор объектов позволяет устанавливать свойства того компонента, который выделен при помощи мыши. Выделим мышью компонент TTable.

Установим значение свойства DatabaseName (псевдоним БД) в PRIMER при помощи выпадающего списка или введя его вручную. Установим значение свойства TableName (имя таблицы БД) в Materialy. DB при помощи выпадающего списка. После этого установим значение свойства Active в True. После этого произойдет реальное связывание компонента TTable (он по умолчанию имеет имя Table1) с реально существующей таблицей Materialy. DB.

Компонент TTable и компонент TQuery (его мы рассмотрим позже) служат для хранения наборов данных. Понятие набора данных несколько шире, чем понятие таблицы БД, поскольку набор данных может содержать:

подмножество записей или полей таблицы БД (компоненты TTable, TQuery);

записи, сформированные из нескольких таблиц БД (компонент TQuery).

Расположим в контейнере DataModule компонент TDataSource. Он служит в качестве связующего звена между невизуальными компонентами (в данном случае Table1) и визуальными компонентами, которые мы добавим в форму №3 позднее. Поэтому компоненты TDataSource часто называют источниками данных. Установим свойство DataSet (имя набора данных) компонента TDataSource в значение Table1 путем выбора из выпадающего списка.

TDataModule нужно сохранить под каким-либо именем (по умолчанию Unit5. pas). Имя модуля Unit, в котором описан TDataModule, добавляется в текст модулей unit всех иных форм приложения, которые будут использовать БД и TDataSource, расположенные в этом TDataModule. Это производится в главном меню среды Delphi, в элементе меню File|Use Unit.