Метод 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_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 |
См. также раздел
Справочные материалы