Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Delph_nov11.doc
Скачиваний:
9
Добавлен:
01.04.2025
Размер:
2.45 Mб
Скачать

Форма модуль данных Data Module

П ри разработке сложных приложений, работающих с базами данных, принято разделять логику работы и пользовательский интерфейс. В Delphi это помогают сделать модуль данных – компонент контейнер типа TdataModule. Это невидимая форма, на которой можно разместить компонент базы данных DataBase. На модуле данных желательно размещать такие невизуальные компоненты как наборы данных: Query, Table (рис.2). Эти компоненты можно размещать и на обычной форме, но если ссылка на компонент Query имеет место в нескольких формах, то компонент Query желательно размещать на модуле данных.

Для того, чтобы добавить модуль данных в проект, нужно выбрать меню File – New – Data Module. Откроется пустая форма, которую следует сохранить как обычно. Желательно с этого начинать, чтобы сразу после инициализации приложения возникало событие создания модуля данных. Но это не обязательно. Можно открыть файл проекта через меню Project – View Source и перенести соответствующую строчку в нужное место.

Компонент Database

Компонент Database предназначен для соединения с конкретной базой данных, точнее с псевдонимом базы данных. Это будет первый компонент, используемый для связи с базами данных, который необходимо расположить на форме (можно располагать на обычной форме, но желательно на специальной форме Data Module). Компонент Database расположен на странице BDE. На рис.3 в OI представлены все свойства компонента Database. Поскольку в приложении этот компонент будет скорей всего единственным, то его свойство Name можно не изменять. Далее нас будет интересовать свойство AliasName. Это имя псевдонима базы данных, которое создается в BDE Administrator или в Database Desktop. Следовательно свойство AliasName можно только выбрать из выпадающего списка.

В ажно: если вы устанавливаете свое программное приложение на другом компьютере, то предварительно Вам нужно проверить есть ли такой псевдоним в BDE на этом компьютере, если его нет, то такой псевдоним нужно создать. Затем необходимо придумать имя для свойства DatabaseName, например ddd, которое в дальнейшем будет псевдонимом для компонент Table и Query. После этих действий установите свойство Connected, равным true. Cобытий у компонента Database совсем немного. Их названия говорят сами за себя.

При возникновении проблем с установкой соединения компонента Database проверьте путь псевдонима, дважды щелкнув по компоненте (рис4).

Компонент Table

Компонент Table предназначен для связи с конкретной таблицей из БД и также расположен на странице BDE. Установив компонент TTable на форму, следует дать ему осмысленное имя. Например TableOsndan, если речь идет о таблице слушателей. Для этого замените свойство Name компонента (рис.5). Свойство DatabaseName - это имя псевдонима, которое создается в BDE Administrator или в Database Desktop, или же это свойство DatabaseName компонента Database, если Вы используете компонент Database, а т.к. мы будем использовать компонент Database, то из выпадающего списка необходимо выбрать придуманное для свойства DatabaseName имя (в нашем случае ddd). После этого в выпадающем списке свойства TableName появятся все таблицы Вашей базы данных. Выберите нужную, например osndan.db. После того, как вы установили эти свойства, можно свойство Active попробовать сменить c false на true. Если у Вас получилось - Вы все сделали правильно. Если нет – возможно, Вы неправильно указали имя базы или таблицы. (DatabaseName или TableName).

Х ороший стиль программирования: В законченном приложении свойство Active должно быть установлено равным false ,затем при событии формы OnActivate это свойство программно делается равным true (TableOsndan.Active:=true или TableOsndan.Open), а при событии формы OnClose это свойство должно программно устанавливается опять в false (TableOsndan.Active:=false или TableOsndan.Close). Это исключит неоправданное поддержание связи с БД, которое занимает ресурсы, а при работе в сети мешает доступу к БД других пользователей.

Кроме этих свойств нас могут заинтересовать следующие:

  • AutoCalcFields При установке в false обработчик события OnCalcFields игнорируется. При установке в true - вызывается для каждой записи. Весьма полезно для вычисляемых полей

  • Filtered При установке в false значение свойства Filter и обработчик OnFilterRecord игнорируются. При установке в true - выполняются для каждой записи.

  • Filter Имеет смысл только при Filter = true. Фильтрует записи в таблице. Обычно применим тогда, когда можно по одному простому выражению определить, надо ли включать запись в результирующий набор данных или нет. Если для того, чтобы определить это недостаточно одного выражения, применяется обработчик события OnFilterRecord.

  • IndexFieldName и IndexName Позволяет выбрать активный индекс. Если значения не выбраны, текущим считается первичный индекс. В программе так и применяется: TabOsndan.IndexName := 'Fio'; или TabOsndan.IndexFieldNames := 'Fam;Im;Otch'; отсортирует таблицу слушателей по фамилиям именам и отчествам. TabOsndan.IndexName := ''; или TabOsndan.IndexFieldNames := ''; отсортитует по первичному ключу. В этих примерах предполагалось, что у вас есть таблица слушателей с индексом Fio по полям Fam, Im, Otch. Важно отметить такую особенность TTable при работе с индексами - можно написать TabOsndan.IndexFieldNames:= 'Fam;Im'; при этом таблица будет отсортирована по фамилиям и именам, игнорирую порядок по отчествам. Но нельзя написать TabOsndan.IndexFieldNames := 'Fam;Otch'; т.к. это нарушает порядок полей, по которым был построен индекс.

  • MasterField и Mastersource. Применяются при организации отношений главный-подчиненный.

  • ReadOnly. Простой способ сделать вашу таблицу доступной только для чтения.

Те свойства, которые видны в Object Inspector лишь небольшая часть свойств. Большая часть свойств доступна программным путем.