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 по их именам.