Компонент TTable
Компонент Tтаblе инкапсулирует таблицу реляционной базы данных, причем независимо от типа базы данных. Для доступа к данным компонент использует функции BDE (см. выше).
Необходимая для работы база данных задается свойством DatabaseName, в котором можно указать зарегистрированный в BDE псевдоним БД или полный путь к файлам БД.
Таблица БД, на основе которой создается набор данных, определяется свойством TableName. При необходимости тип таблицы задается свойством TаblеТуре, хотя обычно это свойство имеет значение ttDefault (см. табл. 16.4), которое включает автоматическое определение типа таблицы по расширению файла.
Примечание
Свойство ТаblеТуре работает только в локальных БД. Обратите внимание, что возможные значения свойства соответствуют основным типам локальных драйверов BDE.
При помощи методов Open и close набор данных открывается и закрывается. О его состоянии можно судить по значению свойства Active. Более подробно о состоянии набора данных расскажет свойство state (см. ниже).
Записи в набор данных можно отбирать при помощи свойств Filter, Filtered, FilterOptions, создающих фильтр, ограничивающий набор данных по значениям данных в одном или нескольких полях.
Методы SetRangeStart, SetRangeEnd, SetRange, ApplyRange, EditRangeStart, EditRangeEnd создают специальный диапазон включаемых в набор данных записей, отбор в диапазон проводится по задаваемым граничным значениям любых полей набора данных.
Поиск нужной записи можно осуществлять методами Lookup или Locate (достаточно просто, но не очень быстро) или, используя существующие в таблице базы данных индексы, методом FindKey (сложнее, но очень быстро).
От предков компонент унаследовал инструменты для работы с закладками. Это свойство Bookmark и методы GetBookmark, FreeBookmark, GotoBookmark.
Работа с полями осуществляется целой группой свойств и методов, среди которых особое место занимает свойство Fields, представляющее собой индексированный список всех полей набора данных. Это свойство удобно использовать в процессе разработки для организации доступа к полям.
Использование индексов обеспечено свойствами indexName, indexFieids, IndexFieldNames, IndexFiles.
Свойства MasterSource, MasterField, IndexName дают возможность установить отношение типа главный/подчиненный с другой таблицей.
Очень полезны в практическом использовании методы и свойства для работы С буфером изменений (свойства CachedUpdates, PendingUpdates, UpdateRecordTypes, МСТОДЫ ApplyUpdates, CancelUpdates, CommitUpdate, RevertRecord). Буфер применяется в клиентских приложениях многоуровневых систем доступа к данным.
От классов TDataSet и TBDEDataSet унаследован обширный набор методов-обработчиков событий, позволяющий решать любые задачи по управлению набором данных.
В табл. 16.8 приведена справочная информация о свойствах и методах компонента ттаble. После этого рассматриваются подробности применения основных механизмов набора данных.
Таблица 16.8. Свойства и методы класса Tтаblеl
Объявление
|
Тип
|
Описание
|
Свойства
|
||
property DataSource: TDataSource;
|
Pu, Ro
|
Ссылается на компонент TDataSource главного набора данных в отношении главный/подчиненный |
property Defaultlndex: Boolean;
|
Pb
|
Управляет сортировкой данных. При значении True записи упорядочиваются по первичному ключу. При значении False упорядочивание не производится |
property Exclusive: Boolean;
|
Pb
|
Ограничивает доступ к таблице. При значении True с таблицей может работать только одно приложение. Это свойство важно при одновременной работе нескольких приложений с данными в локальной сети |
property Exists: Boolean;
|
Pu, Ro
|
Значение True говорит о том, что связанная с компонентом таблица базы данных существует |
property IndexDef s: TindexDefs;
|
Pb
|
Содержит информацию об индексах таблицы |
property IndexFieldCount: Integer;
|
Pu, Ro
|
Возвращает число полей в текущем индексе таблицы |
property IndexFieldNames: string;
|
Pb
|
Разделенный запятыми список названий полей, составляющих текущий индекс. Используется для таблиц серверов SQL |
property IndexFields: [Index: Integer] : TField;
|
Pu
|
Индексированный список полей текущего индекса |
property IndexFiles: TStrings;
|
Pb
|
Список индексных файлов для таблиц dBASE |
property IndexName: string;
|
Pb
|
Определяет вторичный индекс для таблицы. Используется для таблиц локальных СУБД |
property KeyExclusive: Boolean;
|
Pu
|
Управляет границами диапазона, задаваемого методом SetRange. При значении True крайние записи в диапазон не включаются |
property KeyFieldCount: Integer;
|
Pu
|
Содержит число полей ключа, используемых при поиске. При значении 0 применяется только первое поле, при значении 1 — два первых поля и т. д. По умолчанию устанавливается полное число полей ключа |
property MasterFields: string;
|
Pb
|
Список имен полей главной таблицы, разделенных запятой, используемых при создании отношения главный/подчиненный |
property MasterSource: TDataSource;
|
Pb
|
Содержит имя компонента TDataSource, связанного с набором данных, который является главным в отношении главный/подчиненный |
property Readonly: Boolean;
|
Pb
|
Включает и отключает режим "только для чтения". В некоторых случаях набор данных можно открыть только в этом режиме |
property StoreDef s: Boolean;
|
Pb
|
При значении True все сведения об индексах и структуре таблицы хранятся вместе с формой или модулем данных. В этом случае при создании набора данных одновременно создаются поля, индексы, ограничения |
property TableLevel: Integer;
|
Pu
|
Содержит значение уровня таблицы, используемого в драйвере ВОЕ |
property TableName: TFileName;
|
Pb
|
Определяет имя таблицы |
type TTableType = (ttDefault, ttParadox, ttDBase, ttASCII, ttFoxPro) ;
property TableType: TTableType; |
Pb
|
Определяет тип таблицы для стандартного драйвера ВОЕ. Значение ttDefault означает, что тип таблицы определяется по расширению файла |
Методы
|
||
procedure Addlndex (const Name, Fields: string; Options: TIndexOptions) ;
|
Pu
|
Создает новый индекс. Параметр Name определяет имя нового индекса, параметр Fields — список полей индекса через запятую, параметр Options задает тип индекса |
procedure ApplyRange;
|
Pu
|
Включает в работу границы диапазона, заданные методами SetRangeStart, SetRangeEnd или EditRangeStart, EditRangeEnd
|
type TBatchMode = (batAppend, batUpdate, batAppendUpdate , batDelete, batCopy) ;
function BatchMove (ASource: TBDEDataSet; AMode : TBatchMode) : Longint; |
Pu
|
Переносит записи из таблицы ASource в набор данных. Тип операции задается параметром AMode. Возвращает число обработанных записей |
procedure CancelRange;
procedure CloselndexFile (const IndexFileName: string) ; |
Pu Pu
|
Удаляет текущий диапазон Закрывает индексный файл для таблиц dBASE |
procedure CreateTable;
|
Pu
|
Создает новую таблицу, основываясь на данных о структуре таблицы, содержащихся в свойствах FieldDef s и indexDef s. Если свойство FieldDef s пустое, используется свойство Fields. Структура и данные существующей таблицы перезаписываются |
procedure Deletelndex (const Name: string);
|
Pu
|
Удаляет вторичный индекс |
procedure DeleteTable;
|
Pu
|
Уничтожает таблицу базы данных. Набор данных при этом должен быть закрыт |
procedure EditKey;
|
Pu
|
Переводит набор данных в режим редактирования буфера поиска. После использования этого метода можно изменять значения полей, которые применяются для поиска записей |
procedure EditRangeEnd;
|
Pu
|
Разрешает редактирование нижней границы диапазона |
procedure EditRangeStart;
|
Pu
|
Разрешает редактирование верхней границы диапазона |
procedure EmptyTable;
|
Pu
|
Удаляет все записи из набора данных |
function FindKey (const KeyValues: array of const) : Boolean;
|
Pu
|
Проводит поиск записи, значения полей которой удовлетворяют условиям, заданным параметром KeyValues. Значения разделяются запятыми. Для поиска можно использовать только поля, входящие в текущий индекс. Для локальных стандартных таблиц BDE это поля, определяемые свойством indexName. Для таблиц серверов SQL индекс можно задать свойством indexFieldNames. При успешном поиске функция возвращает значение True
|
procedure FindNearest (const KeyValues: array of const);
|
Pu
|
Проводит поиск записи, значения полей которой, заданные параметром KeyValues, в минимальной степени отличаются от требуемых в большую сторону. Значения для поиска разделяются запятыми. Для поиска можно использовать толькополя, входящие в текущий индекс. Для локальных стандартных таблиц ВОЕ это поля, определяемые свойствомIndexName. Для таблиц серверов SQL индекс можно задать свойством indexFieldNames. При успешном поиске функция возвращает True
|
procedure GetlndexNames (List : TStrings) ;
|
Pu
|
Возвращает список индексов таблицы |
procedure GotoCurrent (Table: TTable) ;
|
Pu
|
Синхронизирует курсор набора данных с курсором таблицы, заданной параметром Table
|
function GotoKey: Boolean;
|
Pu
|
Устанавливает курсор на запись, соответствующую значениям полей, заданным при последнем применении метода SetKey или EditKey |
procedure GotoNearest;
|
Pu
|
Устанавливает курсор на запись, точно соответствующую значениям полей, заданным при последнем применении метода SetKey или EditKey, или следующую ближайшую к ним по значениям |
type TLockType = (ItReadLock, ItWriteLock) ; procedure LockTable ( LockType : TLockType) ;
|
Pu
|
Закрывает доступ к таблице Paradox или dBASE из других приложений |
procedure OpenlndexFile (const IndexFileName: string);
|
Pu
|
Открывает индексный файл таблицы dBASE |
procedure RenameTable (const NewTableName: string);
|
Pu
|
Переименовывает таблицу Paradox или dBASE |
procedure SetKey;
|
Pu
|
Очищает буфер поиска. После использования этого метода можно изменять значения полей, используемые для поиска записей |
procedure SetRange (const StartValues, EndValues:
array of const) ; |
Pu
|
Задает диапазон отбора записей. Параметр StartValues определяет значения полей для верхней границы диапазона. Параметр EndValues определяет значения полей для нижней границы диапазона. Значения диапазона задаются для полей текущего индекса |
procedure SetRangeEnd;
|
Pu
|
Задает нижнюю границу диапазона. После этого метода необходимо задать значения для полей текущего индекса, которые и будут нижней границей |
procedure SetRangeStart;
|
Pu
|
Задает верхнюю границу диапазона. После этого метода необходимо задать значения для полей текущего индекса, которые и будут верхней границей |
type TLockType = (ItReadLock, ItWriteLock) ; procedure UnlockTable (LockType : TLockType) ;
|
Pu
|
Разблокирует таблицу Paradox или dBASE для доступа из других приложений |