Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на Pascal / Delphi / Справочник по компонентам Delphi.doc
Скачиваний:
148
Добавлен:
02.05.2014
Размер:
1 Mб
Скачать

Компонент tTable

TObject->TPersistent->TCoinponent->TDataSet-”TDBDataSet—”TTable

Модуль DBTABLES

Страница Палитры компонентов Data Access

Играет важную роль в приложениях, работающих с базами данных. Он пред­назначен для соединения таблиц баз данных через BDE с приложением (ком­понентом TDataSource). Через него идет и обратная связь. С одним компо­нентом TTable может быть связано несколько TDataSource, но обратное не­верно. TTable имеет мощный набор свойств и методов для управления набором данных.

Свойства компонента

(Pb) property Active: Boolean;

(Pb) property AutoCalcField: Boolean;

Регулирует доступ к данным. При значении True открывает набор данных и устанав­ливает его в состояние Browse, в противном случае устанавливается состояние Inactive.

Определяет вызов обработчика события OnCalcField. В значении True метод вы­зывается всегда при редактировании полей.

(Ro) property BOF: Boolean; (Ro) property CanModify: Boolean;

Сообщает о нахождении курсора в первой записи набора данных.

Устанавливает возможность изменения дан­ных.

(Ro) property Database: TDatabase;

Идентифицирует компонент TDatabase, связанный с TTable.

(Pb) property DatabaseName: TFil-Name;

Определяет доступ к базе данных. Может задаваться в виде псевдонима BDE, пути к файлам, специфического псевдонима приложения.

(Ro) property DBHandle: HDBIDB; (Ro) property DBLocale: TLocale;

Определяет дескриптор базы данных, необходимый, в частности, для организации вызова функций API BDE из приложения.

Задает языковый драйвер для BDE.

(Bg property EOF: Boolean;

Сообщает о нахождении курсора в последней записи набора данных.

(Pb) property Exclusive: Boolean;

Используется для установки полного контроля над открываемой таблицей и предотвращения доступа к ней других пользователей. Перед работой с этим свойством необходимо задать свойству Active значение False. При попытке открытия уже используемой другими таблицы с Exclusive = True возникает исключительная ситуация. Свойство полезно при создании приложений для систем, использующих разделяемые файлы.

Сообщает о числе колонок таблицы, используется визуальными компонентами отображения данных.

(бо) property FieldCount: Integer;

Wo) property FieldDefs: TFieldDefs;

Содержит информацию о каждом объекте TFieldDef (см. ниже), связанном с компонентом таблицы.

(Ro) property Fields[Index: Integer]: TField;

Позволяет получить информацию о полях таблицы.

(ro) property Handle: HDBICur;

Дескриптор компонента, позволяет получить доступ к функциям API BDE.

(Ro) property IndexDefs: TIndexDefs;

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

(Ro) property IndexFieldCount: Integer;

Означает число действительных полей для текущего индекса.

(ВД property IndexFieldNames: String;

Используется SQL-сервером для иден­тификации полей, являющихся индексами. Имена полей разделяются точкой с запятой и не должны содержать более 255 символов. Здесь могут быть описаны не только физи­ческие индексы (хранимые в индексных файлах), но и создаваемые на время выпол­нения приложения.

(Pb) property IndexName: String;

Определяет вторичный индекс. Установка свойства приводит к обнулению свойства IndexFieldNames.

(Ro) property IndexFields[Index: Integer] ^Fields-

Содержит информацию обо всех полях текущего индекса.

property KeyExclusive: Boolean;

Определяет, исключать ли из рассмотрения возвращаемые функциями сортировки и поиска записи. Значение по умолчанию — False. Для методов SetRangeStart и SetRangeEnd определяет включающие или исключающие границы диапазона значений. Для методов GoToNearest и FindNearest определяет место нахождения курсора.

property KeyFieldCount: Integer;

Определяет число ключевых полей для

поиска. я

(Ro) property Locale: TLocale;

Идентификатор языкового драйвера для BDE.

(Pb) property MasterFields: String; TDataSource;

Задает имена полей для связи подчиненной таблицы с главной таблицей. При необхо­димости определить несколько полей, их имена разделяются точкой с запятой. При изменении номеров записей в главной табли­це, значения в полях используются для выборки записей из подчиненной таблицы.

Определяет компонент TDataSource, который представляет главную таблицу.

(Ro) property Modified: Boolean;

Показывает, проводились ли изменения в полях записи с момента открытия таблицы или вызова методов Post или Cancel.

(№;) property Readonly: Boolean;

Устанавливает режим "Только для чтения". Перед использованием необходимо установить свойство Active в False.

(Ro) property RecordCount: Longint;

Отображает число записей в наборе данных.

(Ro) property State: TDataSetSCate; (Pb) property TableName: TFileName;

Показывает текущее состояние набора данных (см. аналогичное свойство компонента TDataSource). Значение этого свойства важно при использовании многих методов компонента.

Содержит имя таблицы, используемой ком­понентом.

(Pb) property TableType: TTableType;

Определяет тип используемой таблицы в соответствии с расширением файла (режим Default) или типом TTableType, который содержит следующие значения: ttDefault, “Paradox, “DBase, “ASCII.

(Pb) property UpdateMode: TUpdateMode;

P

Определяет способ обновления данных при работе с базами SQL и задает поля, которые используются для поиска записи в базе. Возможны следующие значения: Where All — использует все поля; WhereKeyOnly — использует только ключевые поля; WhereChanged — использует ключевые и измененные поля записи. Наиболее жестким, предпочтительным и надежным является режим WhereAll (устанавливается по умолчанию).

Обработчики событий

Делятся на две большие группы: вызываемые до (Before) и после (After) методов Open, Insert, Edit, Post, Delete, Cancel и Close. Информацию об этих группах можно получить, используя справочную систему Delphi. Кроме этого сущест­вуют еще два обработчика:

(РЙ property OnCalcFields: TDataSetNotifyEvent ; TDataSetNotifyEvent = procedure (DataSet: TDataSet) of object;

Используется для определения значений вычисляемых полей и вызывается при чтении записи из базы. При свойстве AutoCalcFields = True этот обработчик вызывается при изменении значений невычисляемых полей, если установлено состояние EdsEdit или Edslnsert. При выполнении процедуры набор данных должен находиться в состоянии CalcFields.

(РЙ property OnNewRecord: TDataSetNotifyEvent;

Реагирует на добавление в набор данных новой записи. Позволяет редактиро­вать новые записи без изменения свойства Modified,

Методы компонента

procedure Addlndex(const Name, Fields: String; Options: TIndexOptions); TIndexOptions = set of (ixPrimary, ixUnique, ixDescending, ixNonMaintained, ixCaseInsensitive);

Создает новый индекс для компонента. Параметры: Name — название индекса, Fields — поля индекса, Options — опции типа TIndexOptions (см. примеч. 1).

procedure ApplyRange;

Проводит фильтрацию записей таблицы. Подмножество отбора определяется методами SetRangeStart и SetRangeEnd или EditRangeStart и EditRangeEnd.

procedure Append;

Предназначена для включения в таблицу новых записей. Метод позиционирует курсор в конец набора, переводит его в состояние Insert и открывает новую пустую запись.

procedure AppendRecord(const Values: array of const) ;

Добавляет к таблице новую непустую запись, данные для полей определяются параметром Values. Порядок следования сохраняется. Если число элементов параметра меньше числа полей, то оставшиеся поля устанавливаются в NULL. Типы элементов пара­метра Values должны совпадать с типами полей.

function BatchMove(ASource: TDataSet; AMode: TBatchMode): Longint;

Добавляет, удаляет, копирует или обновляет группы записей. Параметры: ASource задает источник записи, AMode — используемый режим. Режим определяется типом TBatchMode: batAppend, batUpdate, batAppendUpdate, batDelete, batCopy. Функция возвращает число обработанных записей.

procedure Cancel;

Переводит набор данных в состояние dsBrowse и отменяет любые изменения для текущей записи.

procedure CancelRange;

Отменяет фильтрацию записей таблицы, задаваемую функциями ApplyRange и SetRange.

procedure CheckBrowseMode;

Производит проверку открытия набора данных и отсутствия предполагаемых изменений. Если набор данных закрыт, выводится соответствующее сообщение об ошибке. Если компонент находится в состоянии dsEdit, dslnsert или dsSetKey, то вызывается метод Post для передачи в базу данных любых накопленных изменений.

procedure ClearFields;

Возвращает всем полям текущей записи исходные значения. Набор данных должен находиться в состоянии dsEdit.

Закрывает набор данных. Аналогична установке свойства Active в False.

procedure CreateTable; procedure CursorPosChanged; •

procedure Delete;

procedure String) ;

Создает новую пустую таблицу. Перед вызовом метода необходимо установить необходимые значения свойств DatabaseName, TableName, TableType, FieldDefs и IndexDefs.

Используется для передачи сообщения компоненту TDataSet об изменении положения курсора функциями API BDE. Эта процедура используется при определенном свойстве Handle.

Удаляет из таблицы текущую запись, устанавливая курсор на последующую.

Удаляет вторичный индекс. Параметр Name — название индекса. Для использования метода необходимо установить свойство Exclusive в True.

procedure DeleteTable;

Уничтожает таблицу, определяемую свойствами DatabaseName, TableName, TableType.

procedure DisableControls;

Временно приостанавливает соединение набора данных со всеми связанными компонентами TDataSource. В результате прерывается связь с визуальными компонентами. Существует метод обратного действия — EnableControls.

Устанавливает свойство State в dsEdit и подготавливает текущую запись к модификации.

procedure EditKey;

Предназначена для корректировки содержимого буфера ключей поиска. Используется только для .поиска на многих полях после вызова метода SetKey. Для перемещения в найденное поле используется метод GotoKey. He очищает буфер ключей поиска после использования.

procedure EditRangeEnd;

П 6

Позволяет переопределить порядок отбора записей, установленный методом SetRangeEnd. Модифи­цируется набор ключей конца последовательности. Новый порядок может быть реализован методом ApplyRange. Для таблиц Paradox и dBase метод применим только для индексированных полей, а для баз SQL — для всех колонок, определенных свойством IndexFieldNames.

procedure EditRangeStart;

Действует аналогично предыдущему методу, изменяя значение начального ключа.

procedure EmptyTable;

Уничтожает все записи таблицы, которая определяется свойствами DatabaseName, TableName и TableType. Для открытой таблицы должно быть включено свойство Exclusive.

procedure EnableControls;

Восстанавливает соединение со всеми компонентами TDataSource, связанными с данным компонентом и временно отключенными методом DisableControls.

function FieldByName(const FieldName: String): TField;

Возвращает ссылку на экземпляр объекта TField и удобна для работы с конкретным полем. Ее использование не нарушает структуры таблицы, в отличие от применения свойства Fields. Параметром FieldName передается название поля.

function FindField(const FieldName: String): TField;

Возвращает ссылку на экземпляр объекта TField, используя имя, передаваемое параметром PieldName. Не изменяет структуру таблицы. В случае отсутствия заданного поля возвращает nil.

function FindKey(const KeyValues: array of const): Boolean;

Предназначен для поиска записи по индексу. Параметр KeyValues задает список полей индекса. Метод устанавливает набор данных в состояние SetKey. В случае успеха функция возвращает True и перемещает курсор на наиденную запись, в случае неудачи возвращается False.

procedure FindNearest(const KeyValues: array of const);

Находит запись, индекс которой больше или равен заданному параметром KeyValues. Курсор перемещается на найденную запись. Для поиска могут использоваться только строковые поля. По умолчанию используются первичные индексы, задание необходимых значений свойств IndexFieldNames или IndexName позволяет проводить поиск по другим индексам. Для таблиц Paradox и dBase метод применим только к индексированным полям, а для баз SQL — ко всем полям, определенным свойством IndexFieldNames.

procedure First;

Устанавливает курсор на первую запись текущего расположения записей набора данных. На результат влияет применение метода SetRangeStart.

procedure FreeBookmark(Bookmark: TBookmark) ; TBookmark = Pointer;

Освобождает системные ресурсы, используемые методом GetBookmark. Параметр Bookmark задает идентификатор используемой закладки.

function GetBookmark: TBookmark;

Устанавливает закладку на текущей записи, к ней можно вернуться в любой момент при помощи метода GotoBookmark. Возвращает указатель на экземпляр закладки типа TBookmark. Все установ­ленные закладки уничтожаются при закрытии табли­цы или изменении индексов.

procedure GetFieldNames(List TStrings) ;

procedure GetIndexNames(List TStrings) ;

procedure GotoBookmark(Bookmark: TBookmark) ;

: Записывает имена полей набора данных в параметр List.

Записывает все индексы набора данных в параметр List.

Позиционирует курсор на записи, которой соот­ветствует закладка, указатель на которую передается в параметре Bookmark.

procedure GotoCurrent(Table: TTable);

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

function GotoKey: Boolean;

procedure GotoNearest procedure Insert;

procedure InsertRecordfconst Values: array of constIt-

Перемещает курсор на запись, определяемую ключом. Возвращает True в случае успешного поиска. Используется совместно с методами SetKey или EditKey. Если для ключа используется несколько полей, то их число необходимо задать свойством KeyFieldCount.

Используется для перехода к записи, чей индекс равен пли больше значения свойства IndexField. Поиск проводится с первой записи. Используется совместно с методами SetKey и EditKey.

Переводит набор данных в состояние Insert и вставляет на месте курсора новую пустую запись. При наличии в таблице индексов метод размещает новую запись в соответствие с ними.

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

procedure Last;

Перемещает курсор на последнюю запись текущего порядка расположения записей. На результат влияет использование метода SetRangeEnd.

procedure MoveBy(Distance: Integer) ;

П H

Перемещает курсор на число записей, задаваемое параметром Distance. При положительном значении параметра перемещение осуществляется по направлению к концу'таблицы.

Перемещает курсор на одну запись к концу таблицы.

procedure Open; 0

В

A Открывает набор данных, находящийся в состоянии

Browse. Аналогичным действием обладает свойство Active = Тше.

procedure Post;

Производит передачу текущей записи в базу данных. Результат зависит от состояния набора данных (см. свойство State): в Edit запись модифицируется, в Insert запись вставляется или добавляется в конец таблицы, в SetKey измененные поля помещаются в буфер ключа поиска и для набора данных устанавливается состояние Browse. Метод вызывается автоматически при перемещениях по таблице при помощи методов First, Last, Next, Prior, MoveBy, если набор данных находится в состояниях Edit или Insert. Post вызывается также для методов Append, AppendRecord, Insert, InsertRecord, если есть данные, нуждающиеся в обновлении. Если метод не может записать данные в базу, то набор данных устанавливается в состояние Edit.

procedure Prior;

Перемещает курсор на одну строку к началу таблицы.

procedure Refresh;

Обновляет набор данных, читая информацию из базы данных. Применение метода может вызвать противоречие с текущим набором данных компонента, так как не все проведенные приложением изменения могут быть переданы в базу или другие пользователи могут изменить используемую таблицу.

procedure SetFields(const Values: array of const) ;

Изменяет значения полей таблицы, используя массив данных, передаваемый параметром Values. Для успешного применения метода необходимо установить набор данных в состояние Edit. При значении Values = nil, поля устанавливаются в предопределенные значения.

procedure SetKey;

Устанавливает для набора данных состояние SetKey (см. свойство State), которое позволяет осуществлять поиск записей по задаваемым в буфере ключей поиска значениям. Буфер представляет собой набор полей, связанных с табличными ключевыми полями. Метод отличается от процедуры EditKey тем, что уничтожает старое содержимое буфера.

procedure SetRange(const StartValues, EndValues: array of const);

Объединяет методы SetRangeStart, SetRangeEnd, ApplyRange и используется для переупорядочивания данных. Параметр StartValues используется для определения начального индексного ключа, а массив EndValues для конечных ключей. В таблицах баз Paradox и dBase метод применим только для индексированных полей, а в SQL — для всех колонок, определенных свойством IndexFieldNames.

procedure SetRangeEnd;

Задает набор ключей конца последовательности для последующей фильтрации записей таблицы. Метод очищает набор ранее определенных ключей. Резуль­тат используется методом ApplyRange. В таблицах баз Paradox и dBase метод применим только для индексированных полей, а в SQL — для всех колонок, определенных свойством IndexFieldNames.

procedure SetRangeStart;

Задает набор ключей начала последовательности. В остальном аналогичен предыдущему методу.

Устанавливает курсор BDE в положение текущего курсора компонента.

procedure UpdateRecord;

Автоматически вызывается после применения метода Post и сообщает всем связанным компонентам TDataSource о факте изменения исходной таблицы в базе данных для последующей передачи изменений визуальным компонентам отображения данных.

Опции, поддерживаемые СУБД Paradox и dBase приведены в таблице.

Опции

ixCaseInsensitive ixDescending

Paradox

+

dBase

.

+

+ +

ixNonMaintained

+

ixPrimary

+

ixUnique

+

Соседние файлы в папке Delphi