Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать

3.3. Создание модуля данных

Модуль данных содержит объекты, связанные с базой, и исполь­зует­ся для централизованного управления этими объектами. Его создание произ­во­дится командой File/New/Data Module (рис. 3.3.1). Имя создан­ного модуля данных лучше сохранить для наглядности под новым именем, на­при­мер: DataModulStroiki. Разместим компонент Table с панели Data Ac­­cess на стра­­ни­це Components (рис. 3.3.1) и выделим его. Зададим свой­ства: DataBaseName=Stroiki (псевдоним базы), TableName=Stroiki (имя т абли­цы), Name=Stroiki (имя компонента приравняем имени таблицы для наг­ляд­ности), Active=True (чтобы можно было обращаться к таблице из прог­рам­мы). Аналогично сде­­лаем для двух остав­ши­х­ся таблиц. Да­лее раз­местим компо­нент Data Source (ис­точ­­ник дан­­ных) и вы­делим его. За­да­дим свойства: Da­ta­­­Set=Stroiki (имя таб­­­­­­­­лицы) (п.3.4.2), Name=Sourcestroiki (имя ком­­­понента).

Рис. 3.3.1. Окно модуля данных

То же проделаем и c другими таблицами. Получим модуль (рис.3.3.1). Источник данных служит посредником между таблицей базы и экранными формами, что позволяет переходить на другие СУБД, меняя только настройку компонента ‑ источника данных, а не программы. После открытия проекта нужно вызвать этот модуль командой View/Units/Unit2.

П оля в таблице можно использовать как динамические (dynamic) либо как постоянные (persistent). Динамические поля должны быть в таблице, и их можно редактировать. Постоянные поля (виртуальные или псевдополя) могут отсутствовать в таблице, и их значения вычисляются. К имени постоян­ного поля автоматически добавляется имя компонента Table. Для примера все поля таблицы строек сделаем постоянными и добавим псевдополе Os (Os=Ss‑Fs). Для этого щелкнем правой кнопкой мыши на таблице Stroiki в окне модуля данных и выберем команду Field Editor (редактор полей), появится пустое окнo DataModule2.Stroiki. Из контекст­ного меню этого окна выберем команду Add all fields (добавить все поля). Командой New Field вызовем окно для формирования вычисляемого (Calculated) псевдополя Os типа Сurrency. Составим процедуру обработки события OnCalcFields (п. 3.4.1) таблицы Stroiki для вычисления значения (свойство Value) псевдополя Os:

Procedure TDataModule2.StroikiCalcFields(DataSet: TDataSet);

Begin StroikiOs.Value:=StroikiSs.Value‑StroikiFs.Value; End;

При ссылках на объекты модуля данных объект уточняется именем модуля DataModule2 (DataModule2.SourceStroiki).

Р екомендуется для всех полей задавать сло­вес­ные наимено­ва­ния полей в их свойствах DisplayLabel через редактор по­лей, которые вы­во­дятся в формах и компонентах вместо латинских имен полей.

Р екомендуется модуль базы данных создавать под содержа­тель­ным име­нем в пап­ке с базой, включать его в новый проект коман­дой Project/Add to pro­ject и подключать его к головному или друго­му модулю командой File/Use Unit.

3.4. Компоненты доступа к данным (Data Access)

3.4.1. Таблица (Table)

К омпонент отвечает за связь с таблицами базы данных и за допол­ни­тель­ное описание свойств полей базы данных.

Основные свойства

DataBaseName, TableNameпсевдоним базы, имя таблицы в базе.

ReadOnly, TableType­таблица доступна только для чтения, тип таблицы.

Active, State ‑ таблица открыта, состояние таблицы (открыта, редактируется).

Bof/Eof ‑ указатель находится на первой/последней записи таблицы.

CanModify,Exists ‑ разрешение на редактирование, наличие таблицы в базе.

DefaultIndex ‑ при открытии таблица сортируется по ключу.

Exclusive ‑ монопольный режим использования таблицы.

FieldCount, FieldList ‑ число записей в таблице, массив названий полей.

Fields[i] ‑ доступ к i‑му полю (отсчет с 0).

FieldValues[‘<имя поля>’] ‑ доступ к значению поля под указанным именем.

Found, Modify ‑ признак успешного поиска записи и изменения записи.

IndexDefsмассив определений ключей (элемент типа TIndexDef).

IndexNameимя текущего индекса, заданного при создании таблицы.

IndexFieldNamesимена полей через “;” текущего существующего индекса.

IndexFieldCount ‑ число полей для текущего индекса.

KeyExclusive ‑ границы диапазона записей, не входящих в этот диапазон.

KeyFieldCount ‑ число полей ключа, участвующих в поиске записей.

MasterSource/MasterFieldимя источника/поля главной таблицы (п. 3.5).

RecNo ‑ номер текущей записи.

RecordCount, RecordSize ‑ число записей, длина записи в байтах.

Основные методы

Append/Insert ‑ добавление записи в конец/в текущую позицию таблицы.

AppendRecord/InsertRecord(V:array of const) ‑ добавление новой записи в конец/в текущую позицию таблицы со значениями полей из массива V.

ClearFields, Delete ‑ очистка, удаление текущей записи.

CreateTable/DeleteTable ‑ создание/удаление таблицы в программе.

DisableControls отключение всех визуальных компонентов связанных с таблицей с целью ускорения работы и удаления мерцания на экране при перемещении по записям таблицы (п. 3.8).

EnableControls ‑ подключение всех визуальных компонентов, связанных с таблицей после их отключения методом DisableControls (п. 3.8).

Edit,Cancel, Post ‑ начало редактирования, отмена, сохранение изменений.

EmptyTable ‑ удаление всех записей таблицы.

FlushBuffers ‑ запись всех изменений в базу данных.

FieldByName(‘<имя поля>’) ‑ доступ к полю под указанным именем (DataModule2.Stroiki.FieldByName(‘Kz’).AsInteger:=2).

FindField(S):TField ‑ поиск поля под именем S. При отсутствии имени возвращается Nil (DataModule2.Stroiki.FindField(‘Ss’).AsCurrency:=100000).

GetFieldNames(List:TString) ‑ возвращается массив List c названиями полей.

IsEmpty ‑ признак пустой таблицы

Open, Close ‑ открытие, закрытие таблицы.

Refresh ‑ обновление таблицы и загрузка обновленных записей.

RenameTable(S) ‑ переименование таблицы в S (для Paradox, dBase).

SetFields(V:array of const) ‑ заполнение текущей записи значениями из V.

Основные события

After/Before Cancel/Close/Delete/Edit/Insert/Open/Post/Refresh/Scroll ‑ пос­ле/до отмены изменений/закрытия/удаления записи/редактирования записи/ от­кры­тия/сохранения изменений/обновления данных/переме­ще­ния указа­теля к новой записи.

OnCalcFields ‑ формирование значений псевдополей (п. 3.3).

OnDeleteError/OnEditError/OnPostError ‑ ошибка при удалении / редак­тиро­вании /сохранении записи.

OnFilterRecord ‑ процедура фильтрации (свойство Filtered=True).

OnNewRecord ‑ вставка или добавление новой записи.