Объекты DIRECTUM > Базовые объекты > IObject – базовый объект >

Метод AddWhere – добавить условие ограничения в запрос набора данных

Предыдущий раздел В начало Следующий раздел

Синтаксис:

function AddWhere(

 const Condition: WideString): Integer;

Параметры:

Condition – условие ограничения выборки. Условие следует задавать в формате where-условия SQL-запроса:

{(<Условие1>) [and/or/xor (<Условие2>)]}[,...n]

Условие1, Условие2 – простые условия, формируемые по следующему формату:

[not ]<Имя поля> {<Оператор> <Значение>}|{is null}|{like <Значение>}|[between <Значение1> and <Значение2>}|{in ({<Значение>}[,...n])}

где

· Имя поля – имя или псеводним поля набора данных. Если для поля не указан псеводним и имя поля неуникально то перед именем поля следует указывать имя или псевдоним таблицы в формате <Имя таблицы>.<Имя поля>. В условии можно использовать поля таблиц, указанных в разделе from. Имена и псевдонимы полей и таблиц можно получить с помощью следующих свойств:
· Псевдоним поля - IRequisite.FieldName;
· Имя поля - IField.SQLFieldName, IRequisite.SQLFieldName;
· Псевдоним таблицы - TableName, IDataSet.TableName;
· Имя таблицы - SQLTableName, IDataSet.SQLTableName;
· Оператор - один из следующих операторов: =, <, >, <=, >=, <>;
· Значение - значение соответсвующего типа.

Для формирования параметра удобно использовать функцию Format.

Возвращаемое значение:

Идентификатор условия в запросе.

Описание:

Метод добавляет условие в раздел where SQL-запроса набора данных. Добавляемое условие объединяется с уже имеющимися условиями при помощи операции and. Идентификатор условия в запросе следует использовать в качестве параметра метода DelWhere для удаления условия из запроса.

Примечание. При вызове метода не из ISBL-вычислений или из ISBL-вычислений с подключением к системе DIRECTUM, отличной от текущей, значение параметра должно строго соответствовать формату. В противном случае будет сгенерировано исключение.

Пример использования:

 

// Показать все справочники, в которых используется данный реквизит.

RequisiteCode = 'ISBEDocStrg'

Reference = References.SYSREF_REFERENCE_TYPES.GetComponent

Reference.ComponentForm.View.ViewMode = vmNavigation

RequisitesDataSet = Reference.DataSet.DetailDataSet(1)

ReferenceTable = Reference.TableName

RequisitesTable = RequisitesDataSet.TableName

 

AddFrom = Reference.AddFrom(RequisitesTable)

 

// Установить связь между реквизитами и справочниками,

// которые их используют.

AddWhere1 = Reference.AddWhere(Format("%0:s.%1:s = %2:s.%3:s";

 ArrayOf(ReferenceTable; Reference.Requisites(SYSREQ_ID).FieldName;

 RequisitesTable; RequisitesDataSet.Requisites(

 SYSREQ_MAIN_RECORD_ID).FieldName)))

 

// Задать реквизит.

AddWhere2 = Reference.AddWhere(Format("%0:s.%1:s = '%2:s'";

 ArrayOf(RequisitesTable; RequisitesDataSet.Requisites(

 SYSREQ_REF_TYPE_REQ_CODE).FieldName; RequisiteCode)))

 

// Исключить действия с кодом равным RequisiteCode,

// т.к. действия хранятся в той же таблице, что и реквизиты.

AddWhere3 = Reference.AddWhere(Format("%0:s.%1:s <> 'K'";

 ArrayOf(RequisitesTable; RequisitesDataSet.Requisites(

 SYSREQ_REF_TYPE_REQ_SECTION).FieldName)))

 

Reference.ComponentForm.Show

 

Reference.DelFrom(AddFrom)

Reference.DelWhere(AddWhere1)

Reference.DelWhere(AddWhere2)

Reference.DelWhere(AddWhere3)

См. также

Метод AddSelect

Метод AddFrom

Метод DelWhere

Свойство TableName

Свойство SQLTableName

Свойство IDataSet.SQLTableName

Свойство IDataSet.TableName

Свойство IRequisite.FieldName

Свойство IRequisite.SQLFieldName