Параметры Query.
SQL допускает использование динамических запросов, содержащих параметры. Параметры задаются в запросе с двоеточием, предшествующим имени параметра. например, если ввести в свойство SQL запрос:
Select * from pers where (year_b>:PYear) and (dep=:Dep) а потом щелкнуть в Инспекторе Объектов на свойстве Params, то откроется диалоговое окно со списком указанных в запросе параметров, в котором, выделяя параметры по очереди можно задать их сойства:
DataType |
Тип данных параметра (integer, string и т.д.) |
Name |
Имя параметра |
ParamType |
Тип параметра (используется при обращении к процедурам, хранимым на сервере) |
Value |
Значение параметра по умолчанию |
Программный доступ к параметрам во время выполнения приложения осуществляется аналогично доступу к полям набора данных. праметры явдяются объектами типа TParam, образующими массив Params, к элементам которого можно обращаться по индексу. Значения параметров, как и значения полей, определяются такими свойствами объектов-параметров, какValue, Asstring, AsInteger и т.п. Например Query1.Params[0].AsInteger:=1965; Последовательность, в которой располагаются параметры в свойстве Params, определяется последовательностью их упоминания в запросе SQL. Другой способ обращения к параметрам, в котором не надо помнить их индексы – использование их метода ParamByName. Например Query1.ParamByName(‘PYear’).AsInteger:=1965; Чтобы получить результат запроса после задания параметра, надо повторно выполнить запрос.
Основные свойства Query.
Программный доступ к полем компонента Query осуществляется с помощью свойства Fields, по индексу: Query1.Fields[1] или методом FieldByName: Query1. FieldByName(Dep) или по имени объекта поля: Query1Dep.
Для доступа к значениям полей используются те же их свойства Value, Asstring, AsInteger и т.п. Как и в табле можно осуществлять навигацию по набору данных, устанавливать фильтры, ограничивать вводимые значения полей, кэшировать изменения.
Отличие свойства DataSource: Это свойство компонента Query позволяет строить приложения, содержащее связанные друг с другом таблицы. Например, построим приложение, в котором при перемещении по таблице Dep будут отображаться соответствующие записи из таблицы Pers:
на форму поместим компоненты Query1(DataBaseName=dbP, SQL=’Select * from Dep’),DataSource1(DataSet=Query1), DBGrid1(DataSource=DataSource1).
на форму поместим компоненты Query2(DataBaseName=dbP, SQL=’Select * from Pers’),DataSource2(DataSet=Query2), DBGrid2(DataSource=DataSource2).
Компоненты DBGrid будут отображать данные из таблиц независимо.
Если изменить в Query2
SQL=’Select * from Pers Where (Dep=:Dep)’
и в свойстве DataSource компонента Query2 задать источник, связанный с таблицей Dep:
Query2. DataSource= DataSource1, это скажет приложению, что оно должно взять значение параметра :Dep из текущей записи этого источника данных, в качестве параметра будет взято текущее значение этого поля.
Таким образом вспомогательная таблица окажется связанной с головной таблицей
