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