Компонент TTable - доклад

.

Содержание

Обзор

Создание таблиц при помощи компонента TTable

Заключение

  1. Обзор
  2. На этом маленьком уроке мы завершим исследование способностей сотворения таблиц. Как Вы помните, мы уже освоили два метода сотворения таблиц - при помощи утилиты Database Desktop, входящей в поставку Delphi (урок 11) и при помощи SQL-запросов (урок 12), которые можно использовать как в WISQL Компонент TTable - доклад (Windows Interactive SQL - клиентская часть Local InterBase), так и в компоненте TQuery. Сейчас мы разглядим, как можно создавать локальные таблицы в режиме выполнения при помощи компонента TTable.
  3. Создание таблиц при помощи компонента TTable

Для сотворения таблиц компонент TTable имеет способ CreateTable . Этот способ делает новейшую пустую таблицу данной структуры Компонент TTable - доклад. Данный способ (процедура) может создавать только локальные таблицы формата dBase либо Paradox.

Компонент TTable можно поместить на форму в режиме проектирования либо сделать динамически во время выполнения. В последнем случае перед внедрением его нужно сделать, к примеру, при помощи последующей конструкции:

 var

Table1: TTable;

...

Table1:=TTable.Create(nil);

...

Перед вызовом Компонент TTable - доклад способа CreateTable нужно установить значения параметров

Свойство TableType имеет тип TTableType и определяет тип таблицы в базе данных. Если это свойство установлено в ttDefault, тип таблицы определяется по расширению файла, содержащего эту таблицу Компонент TTable - доклад:

Если значение характеристики TableType не равно ttDefault, создаваемая таблица всегда будет иметь установленный тип, вне зависимости от расширения:

Свойство DatabaseName определяет базу данных Компонент TTable - доклад, в какой находится таблица. Это свойство может содержать:

Свойство TableName определяет имя таблицы базы данных.

Свойство FieldDefs (имеющее тип TFieldDefs) для имеющейся таблицы содержит информацию обо всех полях таблицы. Эта Компонент TTable - доклад информация доступна исключительно в режиме выполнения и хранится в виде массива экземпляров класса TFieldDef, хранящих данные о физических полях таблицы (т.о. вычисляемые на уровне клиента поля не имеют собственного объекта TFieldDef). Число полей определяется свойством Count, а доступ к элементам массива осуществляется через свойство Items:

 property Items[Index Компонент TTable - доклад: Integer]: TFieldDef;

При разработке таблицы, перед вызовом способа CreateTable, необходимо сформировать эти элементы. Для этого у класса TFieldDefs имеется способ Add:

 procedure Add(const Name: string; DataType: TFieldType; Size: Word; Required: Boolean);

Параметр Name, имеющий тип string, определяет имя поля . Параметр DataType (тип TFieldType) обозначает тип Компонент TTable - доклад поля . Он может иметь одно из последующих значений, смысл которых ясен из их наименования:

 TFieldType = (ftUnknown, ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftBlob, ftMemo,

ftGraphic);

Параметр Size (тип word) представляет собой размер поля . Этот параметр имеет смысл только для полей типа ftString, ftBytes, ftVarBytes, ftBlob Компонент TTable - доклад, ftMemo, ftGraphic, размер которых может очень варьироваться. Поля других типов всегда имеют строго фиксированный размер, так что данный параметр для их не принимается во внимание. 4-ый параметр - Required - определяет, может ли поле иметь пустое значение при записи в базу данных. Если значение этого параметра - true, то поле является Компонент TTable - доклад “требуемым”, т.е. не может иметь пустого значения. В неприятном случае поле не является “требуемым” и, как следует, допускает запись значения NULL. Отметим, что в документации по Delphi и online-справочнике допущена ошибка - там отсутствует упоминание о четвертом параметре для способа Add .

Если Вы желаете регистрировать таблицу по одному Компонент TTable - доклад либо нескольким полям, используйте способ Add для характеристики IndexDefs, которое, как можно додуматься, также является объектом, т.е. экземпляром класса TIndexDefs. Свойство IndexDefs для имеющейся таблицы содержит информацию обо всех индексах таблицы. Эта информация доступна исключительно в режиме выполнения и хранится в виде массива экземпляров класса TIndexDef, хранящих Компонент TTable - доклад данные об индексах таблицы. Число индексов определяется свойством Count, а доступ к элементам массива осуществляется через свойство Items:

 property Items[Index: Integer]: TIndexDef;

Способ Add класса TIndexDefs имеет последующий вид:

 procedure Add(const Name, Fields: string;
Options: TIndexOptions);

Параметр Name, имеющий тип string, определяет имя индекса . Параметр Fields Компонент TTable - доклад (также имеющий тип string) обозначает имя поля, которое должно быть индексировано, т.е. имя индексируемого поля . Составной индекс, использующий несколько полей, может быть задан перечнем имен полей, разбитых точкой с запятой “;”, к примеру: ‘Field1;Field2;Field4’. Последний параметр - Options - определяет тип индекса . Он может иметь набор значений, описываемых типом Компонент TTable - доклад TIndexOptions:

 TIndexOptions = set of (ixPrimary, ixUnique, ixDescending,

ixCaseInsensitive, ixExpression);

Поясним эти значения. ixPrimary обозначает первичный ключ, ixUnique - уникальный индекс, ixDescending - индекс, отсортированный по уменьшению значений (для строк - в порядке, оборотном алфавитному), ixCaseInsensitive - индекс, “нечувствительный” к регистру букв, ixExpression - индекс по выражению. Отметим, что упоминание о последнем значении также отсутствует Компонент TTable - доклад в документации и online-справочнике . Функция ixExpression позволяет для таблиц формата dBase создавать индекс по выражению. Для этого довольно в параметре Fields указать хотимое выражение, к примеру: 'Field1*Field2+Field3'. Вообщем говоря, не все функции индексов применимы ко всем форматам таблиц. Ниже мы приведем перечень допустимых значений для таблиц Компонент TTable - доклад dBase и Paradox:

 Функции индексов dBASE Paradox

---------------------------------------

ixPrimary ь

ixUnique ь ь

ixDescending ь ь

ixCaseInsensitive ь

ixExpression ь

Нужно придерживаться обозначенного порядка внедрения опций индексов во избежание неправильной работы. Необходимо подчеркнуть, что для формата Paradox функция ixUnique может употребляться только вкупе с опцией ixPrimary (см. пример на диске - Рис. 0-1).

Итак, после наполнения всех Компонент TTable - доклад обозначенных выше параметров и вызова способов Add для FieldDefs и IndexDefs нужно вызвать способ класса TTable - CreateTable:

 with Table1 do

begin

DatabaseName:='dbdemos';

TableName:='mytest';

TableType:=ttParadox;

{Создать поля}

with FieldDefs do

begin

Add('Surname', ftString, 30, true);

Add('Name', ftString, 25, true);

Add('Patronymic', ftString, 25, true);

Add('Age', ftInteger, 0, false);

Add('Weight', ftFloat, 0, false);

end;

{Сгенерировать Компонент TTable - доклад индексы}

with IndexDefs do

begin

Add('I_Name', 'Surname;Name;Patronymic',
[ixPrimary, ixUnique]);

Add('I_Age', 'Age', [ixCaseInsensitive]);

end;

CreateTable;

end;

Индексы можно сгенерировать и не только лишь при разработке таблицы. Для того чтоб сгенерировать индексы для имеющейся таблицы, необходимо вызвать способ AddIndex класса TTable, набор характеристик которого вполне повторяет Компонент TTable - доклад набор характеристик для способа Add класса TIndexDefs:

 procedure AddIndex(const Name, Fields: string;
Options: TIndexOptions);

При всем этом для способа AddIndex справедливы все замечания по поводу записи полей и опций индексов, изготовленные выше.

      Заключение

Итак, мы познакомились с еще одним методом сотворения таблиц - методом, использующим способ CreateTable класса Компонент TTable - доклад TTable. Внедрение данного метода даст Вашему приложению наивысшую упругость, и Вы можете строить локальные таблицы “на лету”. Сопутствующим способом является способ AddIndex класса TTable, позволяющий создавать индексы для уже имеющейся таблицы. Подчеркнем снова, что данный метод применим только для локальных таблиц. Более общий метод состоит в использовании SQL Компонент TTable - доклад-запросов, который мы рассматривали на уроке 12.



komponent-ttable-doklad.html
komponenti-banka-dannih-vklyuchaet-subd-administratora-bd-vichislitelnuyu-sistemu-bazu-dannih.html
komponenti-dialogovih-okon-otkritiya-i-sohraneniya-fajla.html