Справочник по компонентам Delphi. Часть 3 - Компонент TQuery

ОГЛАВЛЕНИЕ

 

Компонент TQuery

TObject ->TPersistent -> TComponent -> TDataSet -> TDBDataSet -> TQuery 

Модуль DBTABLES

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

Используется приложением для связи с SQL-серверами через BDE, открывает доступ к использованию языка SQL для создания запросов с целью получения данных от SQL-сервера. Компонент незаменим при построении приложений клиент/сервер. Передает данные визуальным компонентам через связанный ком­понент TDataSource. TTable и TQuery имеют много общих свойств, обра­ботчиков событий и методов, поэтому ниже будут описаны только уникальные инструменты компонента.

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

(Ro) property Params: TParams ;Представляет собой массив экземпляров объекта TParam и определяет характеристики всех параметров запроса.
 (Wf property Local: Boolean;  Принимает значение True, если связанная с компонентом таблица принадлежит локальным базам Paradox или dBase. False устанавливается в случае использования таблиц SQL-сервера.
 (Ro) property ParamCount: Word; Отражает число записей, содержащихся в массиве свойства Params, т. е. количество параметров, содержащихся в запросе.
property Prepared: Boolean; В значении True сообщает о вызове метода Prepare. Перед изменением свойства необходимо закрыть набор данных (Active = False).
(р1э) property RequestLive: boolean;Для результата запроса устанавливает режим "Только для чтения" при значении False. В True разрешает режим обновления набора данных только в случае использования ограниченного синтаксиса запросов. В противном случае, при использовании локального SQL, устанавливается режим "Только для чтения".
(Pb) property SQL: TStrings; Содержит текст запроса SQL, который будет выполнен при вызове методов Open или ExecSQL. При предполагаемом использовании метода Open перед изменением свойства необходимо закрыть набор данных (метод Close). Для изменения свойства при выполнении приложения, необходимо использовать методы Clear (уничтожение предыдущего состояния) и Add (новое состояние) объекта TSrings. Для загрузки готового запроса из файла используйте метод LoadFromFile.
(fio) property StmtHandle: HDBIStmt;Позволяет компоненту получить прямой доступ к функциям API BDE, использующим результаты запросов.
(Ro) property Text: PChar; Содержит запрос SQL, передаваемый BDE.
(Pb) property UniDirectional: Boolean;При значении True разрешает перемещение по набору данных результатов запроса только вперед. Этот режим позволяет экономить системные ресурсы, так как не проводится кэширование данных. По умолчанию установлено в False.

Ограничения синтаксиса для запросов к локальным Paradox и dBase:
  • используются запросы только к одной таблице;
  • нельзя использовать ORDER BY; • запрещены функции AVG и SUM;
  • запрещены вычисляемые поля (запрет распространяется только на запросы, в самом компоненте такие поля разрешены);
  • WHERE разрешается использовать только для сравнения имен колонок и скалярных констант;
  • допускаются операторы сравнения LIKE,>,<,>=,<=.

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

У компонентов TQuery и TTable полностью совпадают.

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

procedure ExecSQL; Выполняет запрос, содержащийся в свойстве SQL. Этот метод используется при наличии в запросе предложений INSERT, UPDATE, DELETE или любых-предложений Data Definition Language.
procedure ExecNonQuery;Выполняет запрос, если он предусмат­ривает возвращение результата (использу­ется предложение SELECT), в противном случае используется метод ExecSQL.
function ParamByName(const Value: String): TParam;Возвращает элемент свойства Params, используя параметр Value.
procedure Prepare; Посылает запрос в BDE для проверки синтаксиса и оптимизации. Использование метода необязательно, но очень полезно для динамических запросов, которые выполняются неоднократно, так как в противном случае подготовка запроса будет выполняться автоматически каждый раз.
procedure UnPrepare; Устанавливает свойство Prepared в False. В этом случае запрос (свойство SQL) будет транслирован еще раз перед передачей на сервер. При этом сервер получает сообще­ние о возможности освободить ресурсы, связанные с проверкой запроса, так как новый запрос будет отправлен перед вызовом методов ExecSQL или Open.