Compartir a través de


IMAPITable::SortTable

Hace referencia a: Outlook 2013 | Outlook 2016

El método IMAPITable::SortTable ordena las filas de la tabla, en función de los criterios de ordenación.

HRESULT SortTable(
LPSSortOrderSet lpSortCriteria,
ULONG ulFlags
);

Parameters

lpSortCriteria

[in] Puntero a una estructura SSortOrderSet que contiene los criterios de ordenación que se van a aplicar. Pasar una estructura SSortOrderSet que contiene cero columnas indica que la tabla no tiene que ordenarse en ningún orden determinado.

ulFlags

[in] Máscara de bits de marcas que controla el tiempo de la operación IMAPITable::SortTable . Se pueden establecer las siguientes marcas:

TBL_ASYNC

Inicia la operación de forma asincrónica y devuelve antes de que se complete la operación.

TBL_BATCH

Aplaza la finalización de la ordenación hasta que se requieran los datos de la tabla.

Valor devuelto

S_OK

La operación de ordenación se realizó correctamente.

MAPI_E_BUSY

Hay otra operación en curso que impide que se inicie la operación de ordenación. Se debe permitir que se complete la operación en curso o se debe detener.

MAPI_E_NO_SUPPORT

La tabla no admite el tipo de ordenación solicitado.

MAPI_E_TOO_COMPLEX

La tabla no puede realizar la operación porque los criterios de ordenación determinados a los que apunta el parámetro lpSortCriteria son demasiado complejos. SortTable puede devolver MAPI_E_TOO_COMPLEX en las condiciones siguientes.

  • Se solicita una operación de ordenación para una columna de propiedad que la implementación no puede ordenar.

  • La implementación no admite el criterio de ordenación solicitado en el miembro ulOrder de la estructura SSortOrderSet .

  • El número de columnas que se van a ordenar, como se especifica en el miembro cSorts de SSortOrderSet, es mayor de lo que puede controlar la implementación.

  • Se solicita una operación de ordenación, como se indica en una etiqueta de propiedad en SSortOrderSet, en función de una propiedad que no está en el conjunto disponible o activo y la implementación no admite la ordenación en propiedades no del conjunto disponible.

  • Una propiedad se especifica varias veces en un conjunto de criterio de ordenación, como se indica en varias instancias de la misma etiqueta de propiedad, y la implementación no puede realizar dicha operación de ordenación.

  • Se solicita una operación de ordenación basada en columnas de propiedades multivalor mediante MVI_FLAG y la implementación no admite la ordenación en propiedades multivalor.

  • Una etiqueta de propiedad para una propiedad en SSortOrderSet especifica una propiedad o tipo que la implementación no admite.

  • Solo se especifica una operación de ordenación distinta de una que continúe a través de la tabla desde la propiedad PR_RENDERING_POSITION (PidTagRenderingPosition) para una tabla de datos adjuntos que admita este tipo de ordenación.

Comentarios

El método IMAPITable::SortTable ordena las filas de una vista de tabla. Mientras que algunas tablas admiten la ordenación estándar y por categorías en varias columnas de clave de ordenación, otras tablas son más limitadas en su compatibilidad. Normalmente, los proveedores de libretas de direcciones no admiten la ordenación de tablas. Los proveedores de almacén de mensajes suelen admitir la ordenación en la medida en que mantienen el criterio de ordenación de las carpetas que resulta cuando se ordena una tabla completa (una tabla sin restricciones).

Algunas tablas permiten la ordenación en cualquier columna de tabla. Otras tablas no lo hacen; Las columnas que no se incluyen en la vista de tabla no se ven afectadas por una llamada a SortTable . Algunas tablas requieren que las claves de ordenación solo se compilen con columnas en el conjunto de columnas actual de la tabla.

Una tabla puede devolver MAPI_E_NO_SUPPORT o MAPI_E_TOO_COMPLEX de SortTable cuando no puede completar una operación de ordenación. Además, no se garantiza que los proveedores de almacén respeten el conjunto de criterio de ordenación especificado para las tablas de jerarquía.

Cuando hay cero columnas en la estructura SSortOrderSet a las que apunta el parámetro lpSortCriteria , la tabla devuelve el conjunto de columnas actual. El criterio de ordenación actual se puede recuperar llamando al método IMAPITable::QuerySortOrder de la tabla.

Todos los marcadores de una tabla se invalidan y deben eliminarse cuando se realiza una llamada a SortTable , y el marcador BOOKMARK_CURRENT que indica la posición actual del cursor debe establecerse al principio de la tabla.

Si va a ordenar en una columna que contiene una propiedad multivalor sin el MVI_FLAG conjunto de marcas, los valores de la columna se tratan como una tupla completamente ordenada. Una comparación de dos columnas multivalor compara los elementos de columna en orden, notificando la relación de las columnas en la primera desigualdad y devuelve igualdad solo si las columnas que se comparan contienen los mismos valores en el mismo orden. Si una columna tiene menos valores que la otra, la relación notificada es la de un valor NULL con el otro valor.

Notas para los llamadores

SortTable funciona sincrónicamente a menos que establezca una de las marcas. Si establece la marca de TBL_BATCH, SortTable pospone la operación de ordenación a menos que solicite los datos. Si se establece la marca de TBL_ASYNC, SortTable funciona de forma asincrónica, lo que podría devolverse antes de la finalización de la operación.

Llame al método IMAPITable::Abort para detener una operación asincrónica en curso si la ordenación debe realizarse inmediatamente. Si SortTable no puede continuar porque una o varias operaciones asincrónicas de la tabla están en curso, devuelve MAPI_E_BUSY.

Para obtener el mejor rendimiento, llame a SetColumns para personalizar el conjunto de columnas de la tabla y Restringir para limitar el número de filas de la tabla antes de llamar a SortTable para realizar la ordenación.

Cada vez que se produce un error en SortTable , el criterio de ordenación que estaba en vigor antes del error sigue en vigor.

Vea también