Freigeben über


IMAPITable::SortTable

Gilt für: Outlook 2013 | Outlook 2016

Die IMAPITable::SortTable-Methode sortiert die Zeilen der Tabelle je nach Sortierkriterien.

HRESULT SortTable(
LPSSortOrderSet lpSortCriteria,
ULONG ulFlags
);

Parameter

lpSortCriteria

[in] Zeiger auf eine SSortOrderSet-Struktur , die die anzuwendenden Sortierkriterien enthält. Das Übergeben einer SSortOrderSet-Struktur , die null Spalten enthält, gibt an, dass die Tabelle nicht in einer bestimmten Reihenfolge sortiert werden muss.

ulFlags

[in] Bitmaske von Flags, die das Timing des IMAPITable::SortTable-Vorgangs 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 den Abschluss der Sortierung, bis die Daten in der Tabelle erforderlich sind.

Rückgabewert

S_OK

Der Sortiervorgang war erfolgreich.

MAPI_E_BUSY

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

MAPI_E_NO_SUPPORT

Die Tabelle unterstützt den typ der angeforderten Sortierung nicht.

MAPI_E_TOO_COMPLEX

Die Tabelle kann den Vorgang nicht ausführen, da die bestimmten Sortierkriterien, auf die der lpSortCriteria-Parameter verweist, zu komplex sind. SortTable kann unter den folgenden Bedingungen MAPI_E_TOO_COMPLEX zurückgeben.

  • Für eine Eigenschaftsspalte, die von der Implementierung nicht sortiert werden kann, wird ein Sortiervorgang angefordert.

  • Die Implementierung unterstützt nicht die im ulOrder-Member der SSortOrderSet-Struktur angeforderte Sortierreihenfolge.

  • Die Anzahl der zu sortierenden Spalten, wie im cSorts-Element in SSortOrderSet angegeben, ist größer als die Implementierung verarbeiten kann.

  • Ein Sortiervorgang wird angefordert, wie durch ein Eigenschaftstag in SSortOrderSet angegeben, basierend auf einer Eigenschaft, die nicht im verfügbaren oder aktiven Satz enthalten ist, und die Implementierung unterstützt keine Sortierung nach Eigenschaften, die nicht im verfügbaren Satz enthalten sind.

  • Eine Eigenschaft wird mehrmals in einem Sortierreihenfolgesatz angegeben, wie durch mehrere Instanzen desselben Eigenschaftentags angegeben, und die Implementierung kann einen solchen Sortiervorgang nicht ausführen.

  • Ein Sortierungsvorgang, der auf mehrwertigen Eigenschaftenspalten basiert, wird mithilfe von MVI_FLAG angefordert, und die Implementierung unterstützt die Sortierung nach mehrwertigen Eigenschaften nicht.

  • Ein Eigenschaftentag für eine Eigenschaft in SSortOrderSet gibt eine Eigenschaft oder einen Typ an, die von der Implementierung nicht unterstützt wird.

  • Ein anderer Sortiervorgang als der, der die Tabelle von der PR_RENDERING_POSITION (PidTagRenderingPosition)-Eigenschaft vorwärts durchläuft, wird nur für eine Anlagetabelle angegeben, die diese Sortierung unterstützt.

Hinweise

Die IMAPITable::SortTable-Methode sortiert die Zeilen in einer Tabellenansicht. Während einige Tabellen sowohl die standardmäßige als auch die kategorisierte Sortierung für verschiedene Sortierschlüsselspalten unterstützen, sind andere Tabellen in ihrer Unterstützung eingeschränkter. Adressbuchanbieter unterstützen normalerweise keine Tabellensortierung. Nachrichtenspeicheranbieter unterstützen die Sortierung in der Regel in dem Maße, in dem sie die Sortierreihenfolge von Ordnern beibehalten, die sich ergeben, wenn eine vollständige Tabelle (eine Tabelle ohne Einschränkungen) sortiert wird.

Einige Tabellen ermöglichen die Sortierung für eine beliebige Tabellenspalte. Bei anderen Tabellen ist dies nicht derErst. Spalten, die nicht in der Tabellenansicht enthalten sind, sind von einem SortTable-Aufruf nicht betroffen. Einige Tabellen erfordern, dass Sortierschlüssel nur mit Spalten im aktuellen Spaltensatz der Tabelle erstellt werden.

Eine Tabelle kann entweder MAPI_E_NO_SUPPORT oder MAPI_E_TOO_COMPLEX aus SortTable zurückgeben, wenn ein Sortiervorgang nicht abgeschlossen werden kann. Darüber hinaus wird von Speicheranbietern nicht garantiert, dass sie den für Hierarchietabellen angegebenen Sortierreihenfolgesatz berücksichtigen.

Wenn in der SSortOrderSet-Struktur null Spalten vorhanden sind, auf die der lpSortCriteria-Parameter verweist, gibt die Tabelle den aktuellen Spaltensatz zurück. Die aktuelle Sortierreihenfolge kann durch Aufrufen der IMAPITable::QuerySortOrder-Methode der Tabelle abgerufen werden.

Alle Lesezeichen für eine Tabelle werden ungültig und sollten gelöscht werden, wenn ein Aufruf von SortTable erfolgt, und das BOOKMARK_CURRENT Lesezeichen, das die aktuelle Cursorposition angibt, sollte auf den Anfang der Tabelle festgelegt werden.

Wenn Sie nach einer Spalte sortieren, die eine mehrwertige Eigenschaft enthält, ohne dass das MVI_FLAG Flag festgelegt ist, werden die Werte der Spalte als vollständig sortiertes Tupel behandelt. Bei einem Vergleich von zwei mehrwertigen Spalten werden die Spaltenelemente in der Reihenfolge verglichen, wobei die Beziehung der Spalten bei der ersten Ungleichheit gemeldet wird. Die 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.

Hinweise für Aufrufer

SortTable funktioniert synchron, es sei denn, Sie legen eines der Flags fest. Wenn Sie das TBL_BATCH-Flag festlegen, verschiebt SortTable den Sortiervorgang, es sei denn, Sie fordern die Daten an. Wenn das TBL_ASYNC-Flag festgelegt ist, wird SortTable asynchron ausgeführt und kann vor Abschluss des Vorgangs zurückgegeben werden.

Rufen Sie die IMAPITable::Abort-Methode auf, um einen asynchronen Vorgang zu beenden, der ausgeführt wird, wenn die Sortierung sofort erfolgen muss. Wenn SortTable nicht fortgesetzt werden kann, weil mindestens ein asynchroner Vorgang für die Tabelle ausgeführt wird, wird MAPI_E_BUSY zurückgegeben.

Um eine optimale Leistung zu erzielen, rufen Sie SetColumns auf, um den Spaltensatz der Tabelle anzupassen, und Restrict , um die Anzahl der Zeilen in der Tabelle zu begrenzen, bevor Sie SortTable aufrufen, um die Sortierung durchzuführen.

Wenn SortTable fehlschlägt, ist die Sortierreihenfolge, die vor dem Fehler gültig war, weiterhin gültig.

Siehe auch