Стандартные компоненты. Компонент таблицы.
Внимательный читатель заметил, что на рис. 12.1 набор компонентов для каждой из представленных технологий доступа к данным примерно одинаков. Везде есть компонент, инкапсулирующий табличные функции, компонент запроса SQL и компонент хранимой процедуры. И хотя все они имеют разных ближайших предков, тем не менее, функциональность подобных компонентов в различных технологиях почти одинакова.
Поэтому имеет смысл рассмотреть общие для компонентов свойства и методы, представив, что существуют некие виртуальные общие предки для таблицы, запроса и хранимой процедуры.
Примечание
Некоторые из описываемых ниже свойств и методов присутствуют не в каждой реализации компонентов.
Компонент таблицы
Компонент таблицы обеспечивает доступ к таблице базы данных целиком, создавая набор данных, структура полей которого полностью повторяет таблицу БД. За счет этого компонент прост в настройке и обладает многими дополнительными функциями, которые обеспечивают применение табличных индексов.
Но в практике программирования работа с таблицами целиком используется не так часто. А при работе с серверами баз данных промежуточное ПО, используемых технологий доступа к данным, все равно транслирует запрос на получение табличного набора данных в простейший запрос SQL, например:
SELECT * FROM Orders
В такой ситуации применение табличных компонентов становится менее эффективным, чем использование запросов.
После соединения с источником данных (процесс подключения для каждой технологии подробно рассматривается в части IV) необходимо задать имя таблицы в свойстве:
property TableName: String;
Иногда в свойстве TаblеType дополнительно задается тип таблицы.
Если соединение с источником данных настроено правильно, имя таблицы можно выбрать из выпадающего списка свойства TableName.
Преимуществом табличного компонента является использование индексов, которые ускоряют работу с таблицей. Все индексы, созданные в базе данных для таблицы, автоматически загружаются в компонент. Их параметры доступны через свойство:
property IndexDefs: TIndexDefs;
Подробно класс TIndexDefs рассматривается ниже в этой главе.
При работе с компонентом разработчик имеет возможность управлять индексами.
Существующий индекс можно выбрать в Инспекторе объектов в списке свойств:
property IndexName: String;
Или использовать свойство:
property IndexFieldNames: String;
В котором можно задать произвольное сочетание имен индексированных полей таблицы. Имена полей разделяются символом точкой с запятой. Таким образом, при помощи свойства IndexFieldNames можно создавать составные индексы.
Свойства IndexName и IndexFieldNames нельзя использовать одновременно.