M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

    Компонент таблицы

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

    Но в практике программирования работа с таблицами целиком используется не так часто. А при работе с серверами баз данных промежуточное ПО, используемых технологий доступа к данным, все равно транслирует запрос на получение табличного набора данных в простейший запрос SQL, например:

    SELECT * FROM Orders

    В такой ситуации применение табличных компонентов становится менее эффективным, чем использование запросов.

    После соединения с источником данных (процесс подключения для каждой технологии подробно рассматривается в части IV) необходимо задать имя таблицы в свойстве

    property TableName: String;

    Иногда в свойстве TаblеТуре дополнительно задается тип таблицы.

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

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

    property indexDefs: TindexDefs;

    Подробно класс TindexDefs рассматривается ниже в этой главе.

    При работе с компонентом разработчик имеет возможность управлять индексами.

    Существующий индекс можно выбрать в Инспекторе объектов в списке свойств

    property indexName: String;

    или использовать свойство

    property indexFieldNames: String;

    в котором можно задать произвольное сочетание имен индексированных полей таблицы. Имена полей разделяются символом точкой с запятой. Таким образом, при помощи свойства indexFieldNames можно создавать составные индексы.

    Свойства indexName и indexFieldNames нельзя использовать одновременно.

    Число полей, используемых в текущем индексе табличного компонента, возвращает свойство

    property indexFieldCcunt: Integer;

    А свойство

    property indexFields: [index: Integer]: TField;

    представляет собой индексированный список полей, входящих в текущий индекс:

    for i := 0 to MyTable.indexFieldCount — 1 do MyTable.indexFields[i].Enabled := False;

    Для выполнения операций с таблицами и индексами целиком в табличных компонентах реализовано несколько методов.

    Метод

    procedure CreateTable;

    создает новую таблицу в базе данных, используя заданное имя и описание полей, и индексов из свойств TFieldDefs и TindexDefs. Если таблица с таким именем уже имеется в базе данных, то она будет уничтожена и создана заново с новой структурой и данными.

    Метод

    procedure EmptyTable;

    удаляет из набора данных и таблицы базы данных все записи.

    Метод

    procedure DeleteTable;

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

    Метод

    type

    TindexOption = (ixPrimary, ixUnique, ixDescending, ixCaselnsensitive,

    ixExpression, ixNonMaintained);

    TindexOptions = set of TindexOption;

    procedure Addlndex(const Name, Fields: String; Options: TindexOptions, const DescFields: String='');

    добавляет к таблице БД новый индекс. Параметр Name задает имя индекса. В параметре Fields через точку с запятой определяются имена полей, входящих в индекс. Параметр DescFields задает описание индекса из констант, объявленных в типе TindexOption.

    Метод

    procedure Deletelndex(const Name: string);

    уничтожает индекс.

    Кроме этого, табличные компоненты содержат свойства и методы, описываемые в гл. 14.