Создание приложений для работы с базами данных в сети____________563

Программный доступ к параметрам во время выполнения приложения осуще-
ствляется аналогично доступу к полям набора данных. Свойство Params является
указателем на массив параметров типа ТРагат, к элементам которого можно обра-
щаться по индексу через его свойство Items[Word Index]. Последовательность, в
которой располагаются параметры в массиве, определяется последовательностью
их упоминания в запросе SQL.

Значения параметров, как и значения полей, определяются такими свойства-
ми объектов — параметров, как Value, AsString, Aslnteger и т.п. (см. подробнее в
разделе 9.11.4 главы 9 о свойствах похожих объектов — полей). Например, опера-
тор

for (int 1=0; I < Queryl->Params->Count; I++)
if (Queryl->Params->Items[I]->IsNull ?&

Queryl->Params->Items[I]->DataType == ftlnteger)
Queryl->Params->Items[I]->AsInteger = -1;

задаст значение -1 всем целым параметрам, которым до этого не было присвоено
значение. В нем использовано свойство Count — число параметров, свойство Is-
Null, равное true, если параметру не задано никакое значение, свойство DataType,
указывающее тип параметра, и свойство Aslnteger, дающее доступ к значению па-
раметра как к целому числу.
Другой пример: операторы

Queryl->Params->Items[0]->AsInteger = 1950;

Queryl->Parains->Items[1]->AsString = "Бухгалтерия";

задают значения первому (индекс 0) и второму (индекс 1) параметрам компонента
Queryl, в свойстве SQL которого записан приведенный ранее оператор Select с па-
раметрами PYear и Dep. Поскольку в этом операторе параметр PYear упоминается
первым, то его индекс равен 0.

Кроме свойства Items у Params есть еще одно свойство — Param Values. Оно
представляет собой массив значений параметров типа Variant. В качестве индекса
в это свойство передается имя параметра или несколько имен, разделяемых точка-
ми с запятой. Например, операторы

Queryl->Params->ParamValues["PYear"] = 1950;

Queryl->Params->ParamValues["Dep"] = "Бухгалтерия";

задают те же значения параметрам, что и приведенные выше. Преимуществом яв-
ляется то, что при записи этих операторов не надо помнить индексы параметров.
Другим преимуществом свойства Param Values является возможность задать зна-
чения сразу нескольким параметрам. Например:

Variant par[] = {1950,"Бухгалтерия" );

Queryl->Params->ParamValues["PYear;Dep"] = VarArrayOf(par,1) ;

Другой способ обращения к параметрам, при котором не надо помнить их ин-
дексы — использование метода ParamByName компонента Query. Например, опе-
раторы

Queryl->ParamByName("PYear")->AsInteger = 1950;

Queryl->ParamByName("Dep")->AsString = "Бухгалтерия";

задают параметрам с именами PYear и Dep те же значения, что и приведенные ра-
нее операторы.

Следует оговориться, что задание нового значения параметру само по себе еще
не обеспечивает влияния на возвращаемый из запроса результат. Надо повторно
выполнить'данный запрос, чтобы ощутить изменения. Но о том, как это делается,
будет рассказано позднее.