Метод
procedure Deletelndex(const Name: string); уничтожает индекс.
Кроме этого, табличные компоненты содержат свойства и методы, описываемые в гл. 14.
Компонент запроса
Компонент запроса предназначен для создания запроса SQL, подготовки его параметров, передачи запроса на сервер БД и представления результата запроса в наборе данных. При этом набор данных может быть редактируемым или нет.
Любой компонент запроса, каждая строка набора данных которого однозначно связывается с одной строкой таблицы БД, может редактироваться. Например, запрос
SELECT * ERCM Country редактировать можно. Если же приведенное правило не выполняется, то набор данных можно использовать только для просмотра, и, конечно, возможности компонентов здесь ни при чем. Куда, к примеру, записывать результаты редактирования записей следующего запроса:
SELECT CustNo, SUM (AmountPaid)
FRCM Orders GROUP BY CustNo
10 Зак. 559
Ведь в таком запросе каждая запись есть результат суммирования неизвестного заранее числа других записей.
Тем не менее компоненты запросов предоставляют разработчику мощный и гибкий механизм работы с данными. С помощью компонентов запросов можно решать гораздо более сложные задачи, чем с табличными компонентами.
В целом компонент запроса работает быстрее, т. к. структура возвращаемых запросом полей может изменяться, то экземпляры класса TFieldDef, хранящие информацию о свойствах полей, создаются по необходимости при запуске приложения. Табличный компонент создает все классы для описания полей в любом случае, поэтому в приложениях клиент-сервер табличный компонент может открываться медленнее, чем запрос.
Рассмотрим общие свойства и методы компонентов запросов.
Текст запроса определяется свойством
property SQL: TStrings;
В свойстве
property Text: PChar;
содержится окончательно подготовленный текст запроса перед пересылкой его на сервер.
Выполнение запроса возможно тремя способами.
Если запрос возвращает результат в набор данных, то применяется метод procedure Open;
или свойство
property Active: Boolean;
которому присваивается значение True. После выполнения запроса открывается набор данных компонента. Закрывается такой запрос методом
procedure Close;
или тем же свойством Active.
Если запрос не возвращает результат в набор данных (например, использует операторы INSERT, DELETE, UPDATE), то используется метод
procedure ExecSQL;
и после выполнения запроса набор данных компонента не открывается. Попытка использовать для такого запроса метод Open или свойство Active приведет к ошибке создания указателя на курсор данных.
После выполнения запроса в свойстве
property RowsAffected: Integer;
возвращается число обработанных при выполнении запроса записей.
Для того чтобы разрешить редактирование набора данных запроса, необходимо свойству
property RequestLive: Boolean;
присвоить значение True. Это свойство устанавливается, но не работает для запроса, результат которого не модифицируется из-за самого запроса.
Для подготовки запроса к выполнению предназначен метод
procedure Prepare;
который обеспечивает выделение необходимых ресурсов на сервере и проведение оптимизации.