На этом шаге мы рассмотрим компонент TRxQuery
Компонент TRxQuery является наследником компонента TQuery, поэтому обладает
всеми ее свойствами и методами и сохраняет его функциональность. Отличие заключается в наличии свойства
Macros, с помощью которого можно легко и удобно изменять текст SQL-запроса в дизайнере
или во время исполнения. Как известно, TQuery поддерживает динамические (dynamic) запросы,
которые более точно было бы называть параметризуемыми. Для работы с параметрами предназначено свойство
Params. Однако их возможностей часто бывает недостаточно. Самый простой пример - сменить порядок
сортировки (выражение в ORDER BY), или динамически поменять выражение WHERE.
Для решения таких задач TRxQuery предлагает свойство Macros и механизм расширения
макроопределений. Макроопределения (Macros) создаются подобно параметрам (Params).
Вы указываете в тексте запроса (свойство SQL) идентификатор, начинающийся со специального
символа - признака макроопределения (свойство MacroChar). После этого макрос с соответствующим
именем появляется в редакторе свойства Macros и доступен во время исполнения с помощью метода
MacroByName. Вы присваиваете значение макросу, и это значение в строковом виде будет подставляться
в текст запроса вместо определения макроса каждый раз при выполнении запроса.
Таким образом, чтобы изменить запрос, вам не нужно изменять свойство SQL - достаточно изменить
значение макроса, присутствующего в запросе, и переоткрыть запрос.
Таблица 1. Свойства компонента TRxQuery
Свойство | Описание |
---|---|
property Macros: TParams; | Когда вы вводите запрос, компонент создает массив Macros для макроопределений вашего SQL-выражения. Macros является массивом объектов типа TParam, где каждый элемент соответствует макроопределению в запросе. Первому макроопределению соответствует Macros[0], второму Macros[1] и т.д. Число макроопределений сообщает свойство MacroCount. Используйте метод MacroByName вместо прямого доступа к Macros для того, чтобы избежать зависимости от порядка макроопределенй в запросе. |
property MacroChar: Char; | Свойство указывает символ, который будет интерпретироваться как задание макроса в тексте запроса. Этот символ используется точно так же, как символ ':' используется для идентификации параметров запроса (Params). Значение по умолчанию - '%'. |
function MacroByName(const Value: string): TParam; | Метод возвращает элемент свойства Macros, чье свойство Name совпадает с Value. Используйте его, чтобы задавать значения макросов для TRxQuery по их именам. |
На следующем шаге мы рассмотрим компонент TSQLScript.