Поделиться через


Метод IConditionGenerator::GenerateForLeaf (structuredquery.h)

Создает специальное выражение запроса для того, что в противном случае стало бы конечным выражением запроса.

Синтаксис

HRESULT GenerateForLeaf(
  [in]          IConditionFactory   *pConditionFactory,
  [in]          LPCWSTR             pszPropertyName,
  [in]          CONDITION_OPERATION cop,
  [in]          LPCWSTR             pszValueType,
  [in]          LPCWSTR             pszValue,
  [in]          LPCWSTR             pszValue2,
  [in]          IRichChunk          *pPropertyNameTerm,
  [in]          IRichChunk          *pOperationTerm,
  [in]          IRichChunk          *pValueTerm,
  [in]          BOOL                automaticWildcard,
  [out]         BOOL                *pNoStringQuery,
  [out, retval] ICondition          **ppQueryExpression
);

Параметры

[in] pConditionFactory

Тип: IConditionFactory*

Объект IConditionFactory , который можно использовать для создания необходимых узлов.

[in] pszPropertyName

Тип: LPCWSTR

Имя свойства или NULL , если имя свойства отсутствует.

[in] cop

Тип: CONDITION_OPERATION

CONDITION_OPERATION перечислимый тип, определяющий операцию.

[in] pszValueType

Тип: LPCWSTR

Семантический тип, описывающий значения в pszValue и pszValue2.

[in] pszValue

Тип: LPCWSTR

Строка, созданная методом IConditionGenerator::RecognizeNamedEntities , представляющая значение . Если значение pszValue2 не равно NULL, это означает начало диапазона значений.

[in] pszValue2

Тип: LPCWSTR

Если значение не равно NULL, строка, созданная IConditionGenerator::RecognizeNamedEntities , представляющая конец диапазона значения. Если значение РАВНО NULL, то pszValue представляет дискретное значение.

[in] pPropertyNameTerm

Тип: IRichChunk*

Указатель на объект IRichChunk , содержащий сведения о том, какая часть входной строки вызвала имя свойства.

[in] pOperationTerm

Тип: IRichChunk*

Указатель на объект IRichChunk , содержащий сведения о том, какая часть входной строки вызвала операцию.

[in] pValueTerm

Тип: IRichChunk*

Указатель на объект IRichChunk , содержащий сведения о том, какая часть входной строки вызвала значение.

[in] automaticWildcard

Тип: BOOL

Значение TRUE , если созданное условие должно возвращать результаты, начинающиеся с указанного значения, если оно имеет смысл. False , если созданное условие должно возвращать результаты, точно соответствующие указанному значению.

[out] pNoStringQuery

Тип: BOOL*

VARIANT_TRUE , если дерево условий в ppQueryExpression должно быть полным запросом, или VARIANT_FALSE , если полный запрос должен быть дизъюнкцией дерева условий в ppQueryExpression и дерева условий, которое использовалось бы, если бы этот метод вернул S_FALSE.

[out, retval] ppQueryExpression

Тип: ICondition**

Получает указатель на дерево условий ICondition .

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

Тип: HRESULT

Возвращает одно из следующих значений или значение ошибки в противном случае.

Код возврата Описание
S_OK
Условие успешно создано.
S_FALSE
Условие не было создано, и средство синтаксического анализа запросов должно создать его каким-то другим способом.

Комментарии

Если этот метод возвращает S_FALSE, вызывающий синтаксический анализатор запроса должен создать конечный узел N с именем этого свойства, операцией и значением. Если этот метод возвращает S_FALSE и pNoStringQuery содержит VARIANT_FALSE, полный созданный запрос представляет собой деизъюнкцию (ИЛИ) с конечным узлом N и деревом условий в ppQueryExpression в качестве субусловий.

Если этот метод возвращает S_OK и pNoStringQuery содержит VARIANT_TRUE, дерево условий в ppQueryExpression является полным запросом.

Значение pszValue2 не равно NULL только для запроса диапазона, например date:1/2/2003..1/30/2006, где pszValue содержит значение для 02.01.2003, а pszValue2 — значение для 30.01.2006. Генератор условий может отказаться от диапазонов, всегда возвращая S_OK, если значение pszValue2 не равно NULL.

Генератор условий может спокойно игнорировать аргументы pPropertyNameTerm, pOperationTerm и pValueTerm. Однако они используются для создания конечного узла, который содержит правильные сведения об источниках в строке запроса имени свойства, оператора и значения, передав их в MakeLeaf.

Во многих случаях генератор условий может игнорировать аргумент automaticWildcard , так как он не применяется. Однако если созданное дерево условий выполняет поиск строк в той или иной форме, когда поиск префиксов (COP_VALUE_STARTSWITH из CONDITION_OPERATION) и поиск точной строки (COP_EQUAL из CONDITION_OPERATION) имеют смысл, то первый должен создаваться при VARIANT_TRUEautomaticWildcard, а второй , когда automaticWildcardVARIANT_FALSE.

Требования

Требование Значение
Минимальная версия клиента Windows XP с пакетом обновления 2 (SP2), Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 с пакетом обновления 1 (SP1) [только классические приложения]
Целевая платформа Windows
Header structuredquery.h

См. также раздел

CONDITION_CREATION_OPTIONS

CONDITION_OPERATION

CONDITION_TYPE

ICondition

ICondition2

IConditionFactory

IConditionGenerator

Справочные материалы