Freigeben über


IConditionGenerator::GenerateForLeaf-Methode (structuredquery.h)

Generiert einen speziellen Abfrageausdruck für den, der andernfalls zu einem Blattabfrageausdruck werden würde.

Syntax

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
);

Parameter

[in] pConditionFactory

Typ: IConditionFactory*

Ein IConditionFactory-Objekt , das zum Erstellen der erforderlichen Knoten verwendet werden kann.

[in] pszPropertyName

Typ: LPCWSTR

Eigenschaftsname oder NULL , wenn kein Eigenschaftenname vorhanden ist.

[in] cop

Typ: CONDITION_OPERATION

Ein CONDITION_OPERATION aufgezählter Typ, der den Vorgang identifiziert.

[in] pszValueType

Typ: LPCWSTR

Semantischer Typ, der die Werte in pszValue und pszValue2 beschreibt.

[in] pszValue

Typ: LPCWSTR

Eine von IConditionGenerator::RecognizeNamedEntities generierte Zeichenfolge, die den Wert darstellt. Wenn pszValue2 nicht NULL ist, stellt dies den Anfang des Bereichs des Werts dar.

[in] pszValue2

Typ: LPCWSTR

Wenn nicht NULL, eine von IConditionGenerator::RecognizeNamedEntities generierte Zeichenfolge, die das Ende des Wertbereichs darstellt. Wenn NULL, stellt pszValue einen diskreten Wert dar.

[in] pPropertyNameTerm

Typ: IRichChunk*

Zeiger auf ein IRichChunk-Objekt , das Informationen darüber enthält, welcher Teil einer Eingabezeichenfolge den Eigenschaftennamen erzeugt hat.

[in] pOperationTerm

Typ: IRichChunk*

Zeiger auf ein IRichChunk-Objekt , das Informationen darüber enthält, welcher Teil einer Eingabezeichenfolge den Vorgang erzeugt hat.

[in] pValueTerm

Typ: IRichChunk*

Zeiger auf ein IRichChunk-Objekt , das Informationen darüber enthält, welcher Teil einer Eingabezeichenfolge den Wert erzeugt hat.

[in] automaticWildcard

Typ: BOOL

TRUE , wenn die generierte Bedingung Ergebnisse zurückgeben soll, die mit dem angegebenen Wert beginnen, sofern sinnvoll. FALSE , wenn die generierte Bedingung Ergebnisse zurückgeben soll, die genau dem angegebenen Wert entsprechen.

[out] pNoStringQuery

Typ: BOOL*

VARIANT_TRUE , ob die Bedingungsstruktur in ppQueryExpression die vollständige Abfrage sein soll, oder VARIANT_FALSE , wenn die vollständige Abfrage eine Disjunktion der Bedingungsstruktur in ppQueryExpression und der Bedingungsstruktur sein soll, die verwendet worden wäre, wenn diese Methode S_FALSE zurückgegeben hätte.

[out, retval] ppQueryExpression

Typ: ICondition**

Empfängt einen Zeiger auf eine ICondition-Bedingungsstruktur .

Rückgabewert

Typ: HRESULT

Gibt einen der folgenden Werte oder andernfalls einen Fehlerwert zurück.

Rückgabecode BESCHREIBUNG
S_OK
Eine Bedingung wurde erfolgreich generiert.
S_FALSE
Es wurde keine Bedingung generiert, und der Abfrageparser muss eine bedingung auf andere Weise erzeugen.

Hinweise

Wenn diese Methode S_FALSE zurückgibt, sollte der aufrufende Abfrageparser einen Blattknoten N mit diesem Eigenschaftsnamen, Vorgang und Wert generieren. Wenn diese Methode S_FALSE zurückgibt und pNoStringQueryVARIANT_FALSE enthält, ist die vollständig generierte Abfrage eine Disjunktion (OR) mit dem Blattknoten N und der Bedingungsstruktur in ppQueryExpression als Unterbedingungen.

Wenn diese Methode S_OK zurückgibt und pNoStringQueryVARIANT_TRUE enthält, ist die Bedingungsstruktur in ppQueryExpression die vollständige Abfrage.

Der Wert von pszValue2 ist nur für eine Bereichsabfrage ungleich NULL , z date:1/2/2003..1/30/2006. B. , wobei pszValue den Wert für 1/2/2003 und pszValue2 den Wert für 30.01.2006 enthält. Ein Bedingungsgenerator kann bereiche ablehnen, indem immer S_OK zurückgegeben wird, wenn pszValue2 nicht NULL ist.

Ein Bedingungsgenerator kann die Argumente pPropertyNameTerm, pOperationTerm und pValueTerm sicher ignorieren. Sie würde sie jedoch verwenden, um einen Blattknoten zu erzeugen, der korrekte Informationen über die Ursprünge in der Abfragezeichenfolge des Eigenschaftennamens, des Operators und des Werts enthält, indem sie an MakeLeaf übergeben werden.

In vielen Fällen kann ein Bedingungsgenerator das Argument automaticWildcard ignorieren, da es nicht angewendet würde. Wenn die generierte Bedingungsstruktur jedoch eine Form der Zeichenfolgensuche durchführt, wobei sowohl eine Präfixsuche (COP_VALUE_STARTSWITH von CONDITION_OPERATION) als auch eine Suche nach der genauen Zeichenfolge (COP_EQUAL aus CONDITION_OPERATION) sinnvoll sind, sollte erstere generiert werden, wenn automaticWildcardVARIANT_TRUE ist, und letzteres, wenn automaticWildcardVARIANT_FALSE ist.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP mit SP2, Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 mit SP1 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile structuredquery.h

Weitere Informationen

CONDITION_CREATION_OPTIONS

CONDITION_OPERATION

CONDITION_TYPE

ICondition

ICondition2

IConditionFactory

IConditionGenerator

Referenz