На этом шаге мы рассмотрим компонент TRxQuery
Компонент TRxQuery является наследником компонента TQuery, поэтому обладает всеми ее свойствами и методами и сохраняет его функциональность. Отличие заключается в наличии свойства Macros, с помощью которого можно легко и удобно изменять текст SQL-запроса в дизайнере или во время исполнения. Как известно, TQuery поддерживает динамические (dynamic) запросы, которые более точно было бы называть параметризуемыми. Для работы с параметрами предназначено свойство Params. Однако их возможностей часто бывает недостаточно. Самый простой пример - сменить порядок сортировки (выражение в ORDER BY), или динамически поменять выражение WHERE.
Для решения таких задач TRxQuery предлагает свойство Macros и механизм расширения макроопределений. Макроопределения (Macros) создаются подобно параметрам (Params). Вы указываете в тексте запроса (свойство SQL) идентификатор, начинающийся со специального символа - признака макроопределения (свойство MacroChar). После этого макрос с соответствующим именем появляется в редакторе свойства Macros и доступен во время исполнения с помощью метода MacroByName. Вы присваиваете значение макросу, и это значение в строковом виде будет подставляться в текст запроса вместо определения макроса каждый раз при выполнении запроса.
Таким образом, чтобы изменить запрос, вам не нужно изменять свойство SQL - достаточно изменить значение макроса, присутствующего в запросе, и переоткрыть запрос.
Свойство | Описание |
---|---|
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.