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,则完整生成的查询是一个分解 (OR) ,其中叶节点 N 和 ppQueryExpression 中的条件树作为子条件。

如果此方法返回S_OK且 pNoStringQuery 包含 VARIANT_TRUE,则 ppQueryExpression 中的条件树为完整查询。

pszValue2 的值仅为范围查询的非 NULL,例如 date:1/2/2003..1/30/2006,其中 pszValue 包含 2003 年 1 月 2 日的值,pszValue2 包含 2006 年 1 月 30 日的值。 当 pszValue2 不为 NULL 时,条件生成器可以通过始终返回S_OK来选择拒绝范围。

条件生成器可以安全地忽略 参数 pPropertyNameTermpOperationTermpValueTerm。 但是,它会使用它们生成叶节点,该叶节点包含有关属性名称、运算符和值的查询字符串中原点的正确信息,方法是将它们传递给 MakeLeaf

在许多情况下,条件生成器可以忽略 automaticWildcard 参数,因为它不适用。 但是,如果生成的条件树执行某种形式的字符串搜索,其中前缀搜索 (从CONDITION_OPERATION) COP_VALUE_STARTSWITH以及从CONDITION_OPERATION) COP_EQUAL的确切字符串 ( 搜索都有意义,则前者应在VARIANT_TRUEautomaticWildcard 时生成,在VARIANT_FALSEautomaticWildcard 时生成后者。

要求

要求
最低受支持的客户端 Windows XP SP2、Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 SP1 [仅限桌面应用]
目标平台 Windows
标头 structuredquery.h

另请参阅

CONDITION_CREATION_OPTIONS

CONDITION_OPERATION

CONDITION_TYPE

ICondition

ICondition2

IConditionFactory

IConditionGenerator

引用