<<
>>

Лекция 5.6. Навигационный способ доступа к БД

Компонент TTable представляет собой НД, который в некоторый момент времени может быть связан только с одной таблицей БД. Набор данных, возвращаемый компонентом, основан на навигационном способе доступа к данным.

Его рекомендуется использовать только для локальных БД, таких как Paradox и dBase. При работе с удаленными БД лучше использовать компонент TQuery, который будет рассмотрен в следующей лекции.

Рассмотрим основные свойства и методы отличающие класс TTable от, рассмотренного ранее, предка. Наиболее важными являются свойства необходимые для подключения компонента к данным т.к. они указываются всегда:

· DatabaseName: String – путь к БД или псевдоним;

· TableName: TFileName – имя таблицы.

После установки обязательных свойств можно выполнить другие настройки или включить НД через свойство Active или методом Open.

· DefaultIndex: Boolean – управляет включением сортировки по текущему индексу;

· Exclusive: Boolean – включает монопольный доступ к таблице БД;

· Exists: Boolean – указывает, существует ли таблица БД;

· IndexDefs: TIndexDefs – содержит информацию об индексах таблицы;

· IndexFieldCount: Integer – количество полей текущего индекса;

· IndexFieldNames: String – список полей, образующих текущий индекс таблицы;

· IndexFields: [Index: Integer]: TField – открывает доступ к полям текущего индекса;

· IndexFiles: TStrings - содержит список имен индексных файлов для таблицы dBASE;

· IndexName: String – имя вторичного индекса таблицы;

· KeyExclusive: Boolean – если содержит false, граничные точки диапазона при фильтрации по ключам методом SetRange входят в поисковый диапазон, в противном случае - не входят;

· KeyFieldCount: Integer - указывает, сколько полей будут участвовать при поиске по части индекса. Если 0 – первое поле, 1 – первое и второе и т.д.

· MasterFields: String – определяет поля связи главной таблицы в связи главный- детальный;

· MasterSource: TDataSource - определяет источник данных главной таблицы в связи главный- детальный.

· ReadOnly: Boolean – включает (true) или выключает (false) режим «только для чтения» данных;.

· TableType: TTableType = (ttParadox, ttDBase, ttFoxPro, ttASCII) – определяет тип таблицы.

Основные методы класса TTable:

· procedure AddIndex (const Name, Fields: String; Options: IndexOptions) - создает новый индекс с указанным именем (Name) и списком полей которые входят в индекс (Fields). Параметр Options определяет параметры индекса: первичный индекс (ixPrimary), уникальный (ixUnique), индекс по убыванию (ixDescending), чувствительный к регистру букв (ixCaseInsensitive), определенный по индексному выражению (ixExpression), не обновляемый автоматически при открытии таблицы (ixNonMaintained).

· procedure ApplyRange - включает фильтрацию записей по ключевым полям;

· procedure CancelRange - отменяет фильтрацию записей по ключевым полям;

· procedure CreateTable - создает новую таблицу по информации, хранящейся в свойствах FieldDefs, Fields.

· procedure DeleteIndex (const Name: String) - уничтожает индекс с именем Name.

· procedure EditKey – переводит в режим редактирования (dsSetKey) буфер поиска;

· procedure EditRangeEnd - позволяет изменить конечное значение диапазона фильтрации по индексным полям;

· procedure EditRangeStart - позволяет изменить начальное значение диапазона фильтрации по индексным полям;

· procedure EmptyTable - удаляет все записи из таблицы;

· function FindKey (const KeyValues: array of const): Boolean - отыскивает запись по указанным значениям KeyValues ключевых полей и возвращает True в случае успеха;

· procedure FindNearest (const KeyValues: array of const) - перемещает курсор на запись, наиболее полно удовлетворяющую указанным значениям KeyValues ключевых полей;

· procedure GetProviderAttributes (List : TList) - получает из BDE и помещает в список List языковый драйвер, маршрут доступа и имя таблицы;

· function GotoKey: Boolean – ищет запись, ключевые поля которой соответствуют значениям, связанным с предыдущими вызовами StartKey или EditKey.

В случае успеха перемещает курсор на найденную запись и возвращает true;

· procedure GotoNearest - перемещает курсор на запись, наиболее полно удовлетворяющую значениям ключей, установленных методами SetKey или EditKey.

· procedure RenameTable (const NewTableName: String) – переименовывает файл связанный с текущим НД;

· procedure SetKey - переводит таблицу в режим dsSetKey и очищает буфер ключей. С помощью FieldByName программа должна установить новый набор ключей и с помощью ApplayRange отфильтровать НД по индексным ключам;

· procedure SetRange (const StartValues, EndValues: array of const) - переводит таблицу в режим dsSetKey, устанавливает новый набор начальных StartValues и конечных EndValues значений буфера ключей и фильтрует НД по индексным ключам;

· procedure SetRangeEnd - переводит таблицу в режим dsSetKey и очищает буфер конечных значений ключей. С помощью FieldByName программа должна установить новый набор ключей и с помощью ApplayRange отфильтровать НД по индексным ключам;

· procedure SetRangeStart - переводит таблицу в режим dsSetKey и очищает буфер начальных значений ключей. С помощью FieldByName программа должна установить новый набор ключей и с помощью ApplayRange отфильтровать НД по индексным ключам;

· procedure UnlockTable (LockType: TLockType) - отменяет блокировку таблицы (см. LockTable).

Как видно из рассмотренных свойств и методов большинство из них используются для работы с индексами таблицы. Текущий индекс используется для сортировки, поиска записей и установки связей между таблицами. Понятие индекса тесно связано с понятием ключа в теории БД, в связи с этим они могут быть простыми и сложными, уникальными и неуникальными и т.д. Индексов у одной таблицы может быть множество, они могут обладать различными свойствами и состоять из одного или более полей.

Использование индексов

Свойство IndexDefs компонента TTable содержит ссылку на объект класса TIndexDefs. С помощью свойств и методов этого класса можно получить информацию об индексах таблицы.

В частности, свойство Count возвращает количество индексов, а свойство Items[Index: Integer]: TIndexDef - открывает доступ к набору объектов типа TIndexDef, каждый из которых содержит информацию о конкретном индексе. Index должен принадлежать диапазону 0...Count - 1.

Основные свойства класса TIndexDef:

· CaselnsFields: String – содержит перечень полей, которые будут учитывать разницу в высоте букв.

· DescFields: String – содержит перечень полей, в которых значения сортируются в нисходящем порядке;

· Expression: String - содержит индексное выражение.

· Fields: String – содержит список полей, по которым построен индекс. Поля в строке разделены точкой с запятой.

· Name: String – содержит имя индекса.

· Options: TIndexOptions - определяет характеристики индекса: ixPrimary - первичный индекс; ixUnique -уникальный индекс; ixDescending - сортировка по нисходящему значению; ixNonMaintained - индекс не обновляется автоматически в момент открытия таблицы; ixCaselnsensitive - учитывается высота букв в строковых полях.

Основные методы класса TIndexDefs:

· procedure Add(const Name, Fields: :String; Options: TIndexOptions) - cоздает новый объект TIndexDef и помещает его в коллекцию TIndexDefs. Параметры Name, Fields и Options используются для установки значений аналогичных свойств объекта класса TIndexDef;

· procedure Clear – очищает список Items;

· procedure GetlndexNames(List: TStrings) - возвращает в параметр List список имен индексов;

· procedure Update - обновляет элементы коллекции.

Рассмотрим код получения имен всех индексов таблицы БД:

ListBoxl.Clear;

Tablel.IndexDefs.Update;

for i:= 0 to Tablel,IndexDefs.Count - 1 do

ListBoxl.Items.Add(Tablel.IndexDefs[i].Name);

Перед считыванием значения свойства Name необходимо выполнить метод IndexDefs. Update для обновления информации обо всех имеющихся индексах.

Отметим, что для таблиц Paradox первичный индекс не имеет имени и для него в свойстве Name возвращается пустая строка.

Вопросы для самоконтроля

1. Что подразумевается под навигационным доступом к БД?

2. В чем заключается основное отличие класса TTable от класса TDataSet?

3. Как компонент класса TTable подключается к таблице БД?

4. Какие методы позволяют выполнять создание, удаление и переименование таблиц БД?

5. Как можно выполнить поиск по НД класса TTable?

6. Какие свойства позволяют использовать индексы?

7. Что определяет тип TIndexOptions, какие значения он может принимать?

<< | >>
Источник: РазработкА и эксплуатациЯ автоматизированных информационных систем. ЛЕКЦИИ.

Еще по теме Лекция 5.6. Навигационный способ доступа к БД:

  1. 3.4. Структура корпоративного права
  2. 61. СПОСОБЫ ОБЕСПЕЧЕНИЯ ОБЯЗАТЕЛЬСТВ
  3. Конфедерация и иные формы межгосударственных объединений (союзы, сообщества, содружества, ассоциации)
  4. 57 Понятие системы законодательства. Основные свойства российской системы законодательства: многообразие, государственная упорядоченность, иерархичность нормативных юридических актов.
  5. 59 Понятие систематизации нормативных юридических актов. Способы систематизации юридических актов: обработка (сбор актов), перегруппировка (создание сборников), изложение (объединение).
  6. 2. Роль фіскальної політики в державному регулюванні.