TRxQuery Component

Unit
RxQuery

Description
Компонента TRxQuery является наследником компоненты TQuery, поэтому обладает всеми ее свойствами и методами и сохраняет ее функциональность.
Отличие заключается в наличии свойства Macros, с помощью которого можно легко и удобно изменять текст SQL-запроса в дизайнере или во время исполнения.
Как известно, TQuery поддерживает динамические (dynamic) запросы, которые более точно было бы называть параметризуемыми. Для работы с параметрами предназначено свойство Params. Однако их возможностей часто бывает недостаточно. Самый простой пример — сменить порядок сортировки (выражение в ORDER BY). Или динамически поменять выражение WHERE.

Для решения таких задач TRxQuery предлагает свойство Macros и механизм расширения макроопределений. Макроопределения (Macros) создаются подобно параметрам (Params). Вы указываете в тексте запроса (свойство SQL) идентификатор, начинающийся со специального символа — признака макроопределения (свойство MacroChar). После этого макрос с соответствующим именем появляется в редакторе свойства Macros и доступен во время исполнения с помощью метода MacroByName. Вы присваиваете значение макросу, и это значение в строковом виде будет подставляться в текст запроса вместо определения макроса каждый раз при выполнении запроса.

Таким образом, чтобы изменить запрос, вам не нужно изменять свойство SQL — достаточно изменить значение макроса, присутствующего в запросе, и переоткрыть запрос.



Примеры работы и некоторые интересные свойства и методы.

Applies to
TRxQuery component

Declaration
property Macros: TParams;

Description
Когда вы вводите запрос, компонента создает массив Macros для макроопределений вашего SQL-выражения.
Macros является массивом объектов типа TParam, где каждый элемент соответствует макроопределению в запросе. Первому макроопределению соответствует Macros[0], второму Macros[1] и т.д.

Число макроопределений сообщает свойство MacroCount.

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



Applies to
TRxQuery component

Declaration
property MacroChar: Char;

Description
Свойство указывает символ, который будет интерпретироваться как задание макроса в тексте запроса. Этот символ используется точно так же, как символ ':' используется для идентификации параметров запроса (Params).
Значение по умолчанию — '%'.



Applies to
TRxQuery component

Declaration
function MacroByName(const Value: string): TParam;

Description
Метод возвращает элемент свойства Macros, чье свойство Name совпадает с Value.
Используйте его, чтобы задавать значения макросов для TRxQuery по их именам.