LL_QUERY_EXPR2HOSTEXPRESSION

Aufgabe:

Über diesen Callback weist List & Label den Host an, einen Filterausdruck (wie im Designer konfiguriert) in die native Syntax der Datenquelle zu übersetzen. Dieser Callback wird mehrere Male, für jeden Teil des Filterausdrucks, ausgelöst sobald die Anwendung LlPrintDbGetCurrentTableFilter() aufruft. Dieser Callback kann z. B. dafür verwendet werden, List & Label Filter in einer SQL-Abfrage zu übersetzen.

Aktivierung:

Immer aktiv, ausgelöst durch den Aufruf von LlPrintDbGetCurrentTableFilter().

Parameter:

lParam zeigt auf eine scLLEXPR2HOSTEXPR-Struktur. Der Präfix "_p" bedeutet, dass es sich um einen Pointer auf das Argument handelt, in der Beschreibung wird es aber für die Lesbarkeit Argument genannt.

_nSize: Größe der Struktur

_pszTableID: Tabelle, zu der dieser Ausdruck gehört.

_nType: Art des Elements, das übersetzt werden soll. Für die meisten Operationen setzen Sie _pvRes auf das resultierende Statement für die Operation. Wenn _nType z. B. LLEXPR2HOSTEXPR_ARG_BINARY_OPERATOR_ADD ist, würde der typische Rückgabewert _pvRes = _pv1 + _T("+") + _pv2 sein.

Wert

Bedeutung

LLEXPR2HOSTEXPR_ARG_BOOLEAN

Ein Boole'scher Wert.

LLEXPR2HOSTEXPR_ARG_TEXT

Ein Text-Wert. Wenn Sie Ihre Abfrage parametrisieren müssen um SQL Injection Angriffe zu vermeiden, setzen Sie den _pvName Member auf einen Parameternamen (eingangs enthält _pvName einen eindeutige, fortlaufende Integer Index, den Sie für den Namen verwenden können wenn nötig) und setzen Sie _pvRes auf den resultierende Text. Die Parameterwerte werden in die entsprechenden Variants zurückgeliefert, die an LlPrintDbGetCurrentTableFilter() übergeben wurden.

LLEXPR2HOSTEXPR_ARG_NUMBER

Ein numerischer Wert. _pvArg1->vt ist entweder VT_l4 für einen Integer- oder VT_R8 für einen Fließkomma-Wert.

LLEXPR2HOSTEXPR_ARG_DATE

Ein Datumswert

LLEXPR2HOSTEXPR_ARG_UNARY_OPERATOR_SIGN

Der Vorzeichen-Operator

LLEXPR2HOSTEXPR_ARG_UNARY_OPERATOR_NEGATION

Der Negierungs-Operator

LLEXPR2HOSTEXPR_ARG_BINARY_OPERATOR_ADD

Der "+" Operator

LLEXPR2HOSTEXPR_ARG_BINARY_OPERATOR_SUBTRACT

Der "-" Operator

LLEXPR2HOSTEXPR_ARG_BINARY_OPERATOR_MULTIPLY

Der "*" Operator

LLEXPR2HOSTEXPR_ARG_BINARY_OPERATOR_DIVIDE

Der "/" Operator

LLEXPR2HOSTEXPR_ARG_BINARY_OPERATOR_MODULO

Der "%" Operator

LLEXPR2HOSTEXPR_ARG_LOGICAL_OPERATOR_XOR

Der logische xor Operator

LLEXPR2HOSTEXPR_ARG_LOGICAL_OPERATOR _OR

Der logische or Operator

LLEXPR2HOSTEXPR_ARG_LOGICAL_OPERATOR_AND

Der logische and Operator

LLEXPR2HOSTEXPR_ARG_RELATION_EQUAL

Der "=" Operator

LLEXPR2HOSTEXPR_ARG_RELATION_NOTEQUAL

Der "<>" Operator

LLEXPR2HOSTEXPR_ARG_RELATION_LARGERTHAN

Der ">" Operator

LLEXPR2HOSTEXPR_ARG_RELATION_LARGEREQUAL

Der ">=" Operator

LLEXPR2HOSTEXPR_ARG_RELATION_SMALLERTHAN

Der "<" Operator

LLEXPR2HOSTEXPR_ARG_RELATION_SMALLEREQUAL

Der "<=" Operator

LLEXPR2HOSTEXPR_ARG_FUNCTION

Eine Designer-Funktion. _pvName enthält den Funktionsnamen, _pv1…_pv4 enthalten die Funktionsargumente.

LLEXPR2HOSTEXPR_ARG_FIELD

Ein Datenbankfeld. Abhängig von der Zielsyntax kann es notwendig sein, einen Identifier-Namen zu maskieren oder einzurahmen.

 

_pvRes: Ein VARIANT, der den resultierenden Ausdruck bekommt. Setzen Sie den Pointer auf NULL oder den VARIANT-Typ auf VT_EMPTY, wenn keine geeignete Übersetzung verfügbar ist. Der ganze (oder im Falle eines AND Operators der aktuelle Zweig des) Ausdruck(s) ist nicht übersetzt.

_nArgs: Anzahl Argumente. Dieser Member ist wichtig für Funktionen mit optionalen Argumenten.

_pvName: Name der zu übersetzenden Funktion. Dieser Member kann auch gesetzt werden um Abfrageparameter (siehe oben) zu behandeln.

_pv1: Abhängig von _nType (siehe oben), ist dies das erste Argument einer Funktion oder der linke Teil eines Operators.

_pv2: Abhängig von _nType (siehe oben), ist dies das zweite Argument einer Funktion oder der rechte Teil eines Operators.

_pv3: Das dritte Argument einer Funktion.

_pv4: Das vierte Argument einer Funktion.

Rückgabewert:

Wert

Bedeutung

0

Die Übersetzung wurde nicht verarbeitet oder konnte nicht verarbeitet werden. Der ganze (oder im Falle eines AND Operators der aktuelle Zweig des) Ausdruck(s) ist nicht übersetzt.

1

Die Übersetzung wurde genau verarbeitet.

2

Die Übersetzung wurde ungenau verarbeitet, das Ergebnis wird mehr Datensätze als passend enthalten. In diesem Fall wird List & Label zusätzlich seinen eigenen Filter anwenden um die überzähligen Datensätze zu filtern.