Freigeben über


IMAPITable::Restrict

Gilt für: Outlook 2013 | Outlook 2016

Wendet einen Filter auf eine Tabelle an, wobei der Zeilensatz auf die Zeilen reduziert wird, die den angegebenen Kriterien entsprechen.

HRESULT Restrict(
LPSRestriction lpRestriction,
ULONG ulFlags
);

Parameter

lpRestriction

[in] Zeiger auf eine SRestriction-Struktur , die die Bedingungen des Filters definiert. Durch Übergeben von NULL im lpRestriction-Parameter wird der aktuelle Filter entfernt.

ulFlags

[in] Bitmaske von Flags, die das Timing des Einschränkungsvorgangs steuert. Die folgenden Flags können festgelegt werden:

TBL_ASYNC

Startet den Vorgang asynchron und gibt zurück, bevor der Vorgang abgeschlossen ist.

TBL_BATCH

Verzögert die Auswertung des Filters, bis die Daten in der Tabelle erforderlich sind.

Rückgabewert

S_OK

Der Filter wurde erfolgreich angewendet.

MAPI_E_BUSY

Ein weiterer Vorgang wird ausgeführt, der verhindert, dass der Einschränkungsvorgang gestartet wird. Entweder sollte der laufende Vorgang abgeschlossen oder beendet werden.

MAPI_E_TOO_COMPLEX

Die Tabelle kann den Vorgang nicht ausführen, da der bestimmte Filter, auf den der lpRestriction-Parameter verweist, zu kompliziert ist.

Hinweise

Die IMAPITable::Restrict-Methode richtet eine Einschränkung oder einen Filter für eine Tabelle ein. Wenn eine vorherige Einschränkung vorhanden ist, wird sie verworfen und die neue angewendet. Das Anwenden einer Einschränkung hat keine Auswirkungen auf die zugrunde liegenden Daten einer Tabelle. Es ändert einfach die Ansicht, indem die Zeilen, die abgerufen werden können, auf Zeilen beschränkt werden, die Daten enthalten, die die Einschränkung erfüllen.

Es gibt verschiedene Arten von Einschränkungen, die jeweils mit einer anderen Struktur beschrieben werden. Die SRestriction-Struktur enthält zwei Member: einen Wert, der den Typ der Einschränkung angibt, und die spezifische Struktur, die für diesen Typ gilt.

Benachrichtigungen für Tabellenzeilen, die durch Aufrufe von Restrict in der Ansicht ausgeblendet werden, werden nie generiert.

Eine Eigenschaftseinschränkung für eine mehrwertige Eigenschaft funktioniert wie eine Einschränkung für eine einwertige Eigenschaft. Für eine mehrwertige Eigenschaft, die in einer Eigenschaftseinschränkung verwendet werden soll, muss das flag MVI_FLAG festgelegt sein. Wenn dieses Flag nicht festgelegt ist, wird es als vollständig sortiertes Tupel behandelt. Ein Vergleich von zwei mehrwertigen Spalten vergleicht die Spaltenelemente in der reihenfolge und gibt die Beziehung der Spalten bei der ersten Ungleichheit an. Gleichheit wird nur zurückgegeben, wenn die verglichenen Spalten dieselben Werte in derselben Reihenfolge enthalten. Wenn eine Spalte weniger Werte als die andere hat, ist die gemeldete Beziehung die eines NULL-Werts zum anderen Wert.

Weitere Informationen zu Einschränkungen finden Sie unter Informationen zu Einschränkungen.

Hinweis

Wenn Sie dynamische Abfragen zum Suchen nach Daten auf dem Server erstellen, verwenden Sie die FindRow-Methode , anstatt die Restrict-Methode und die QueryRows-Methode zusammen zu verwenden. Die Restrict-Methode erstellt eine zwischengespeicherte Sicht, die verwendet wird, um alle Nachrichten auszuwerten, die dem Basisordner hinzugefügt oder geändert wurden. Wenn eine Clientanwendung die Restrict-Methode für jede dynamische Abfrage verwendet, wird für jede Abfrage eine zwischengespeicherte Sicht erstellt.

Hinweise für Aufrufer

Um die aktuelle Einschränkung zu verwerfen, ohne eine neue zu erstellen, übergeben Sie NULL in lpRestriction.

Wenn ein weiterer asynchroner Tabellenaufruf ausgeführt wird, der dazu führt, dass Restrict MAPI_E_BUSY zurückgibt, können Sie IMAPITable::Abort aufrufen, um den Aufruf zu beenden.

Restrict funktioniert synchron, es sei denn, Sie legen eines der Flags fest. Wenn Sie das TBL_BATCH-Flag festlegen, verschiebt Restrict die Auswertung der Einschränkung, es sei denn, Sie fordern die Daten an. Wenn das TBL_ASYNC-Flag festgelegt ist, wird Restrictasynchron ausgeführt und wird möglicherweise vor Abschluss des Vorgangs zurückgegeben.

Alle Lesezeichen für eine Tabelle werden verworfen, wenn ein Aufruf von Restrict erfolgt, und BOOKMARK_CURRENT, die aktuelle Cursorposition, wird auf den Anfang der Tabelle festgelegt.

Wenn Sie versuchen, eine Eigenschaftseinschränkung für eine Eigenschaft zu erzwingen, die nicht im Spaltensatz der Tabelle enthalten ist, sind die Ergebnisse nicht definiert. Wenn Sie nicht sicher sind, ob eine Eigenschaft in einer Tabelle unterstützt wird, kombinieren Sie die Eigenschaftseinschränkung mit einer exists-Einschränkung. Die exists-Einschränkung überprüft, ob die Eigenschaft vorhanden ist, bevor versucht wird, die Eigenschaftseinschränkung zu erzwingen.

Erwarten Sie nicht, dass Sie eine Tabellenbenachrichtigung für eine Zeile erhalten, die aufgrund einer Einschränkung aus einer Tabelle gefiltert wurde.

MFCMAPI-Referenz

Einen MFCMAP-Beispielcode finden Sie in der folgenden Tabelle.

Datei Funktion Kommentar
ContentsTableListCtrl.cpp
CContentsTableListCtrl::ApplyRestriction
MFCMAPI verwendet die IMAPITable::Restrict-Methode , um eine Einschränkung für eine Tabelle festzulegen.

Siehe auch

IMAPITable::Abort

IMAPITable::FindRow

IMAPITable::GetRowCount

IMAPITable::QueryRows

SPropertyRestriction

IMAPITable : IUnknown

MFCMAPI (engl.) als ein Codebeispiel