Trabajar con columnas multivalor
Hace referencia a: Outlook 2013 | Outlook 2016
Una columna multivalor contiene los datos de una propiedad multivalor, que es una propiedad que tiene una matriz de valores del tipo base en lugar de un valor único. Dado que ninguna de las tablas incluye propiedades multivalor en sus conjuntos de columnas predeterminados, las propiedades multivalor solo se incluyen en una tabla si el usuario de la tabla la solicita.
Las columnas multivalor se pueden mostrar en tablas:
En una sola fila, con todos los valores de propiedad aparecen en la instancia de una sola columna. Este valor es predeterminado.
- O-
En una serie de filas, con una fila para cada uno de los valores de propiedad. Cada valor único aparece en la columna de su propia fila con tantas filas como valores en la propiedad multivalor. Cada fila tiene un valor único para la propiedad PR_INSTANCE_KEY (PidTagInstanceKey), pero los mismos valores para las demás columnas. Si una fila contiene más de una columna con varios valores, por ejemplo, dos columnas con valores M y N respectivamente, aparecen en la tabla las instancias de M*N de la fila.
Un usuario de tabla solicita el tipo de presentación no predeterminado llamando al método IMAPITable::SetColumns con la marca MVI_FLAG establecida en el tipo de propiedad de la columna multivalor. La marca de MVI_FLAG es una constante definida como resultado de combinar las marcas de MV_FLAG y MV_INSTANCE con una operación OR lógica. Además de usarse en SetColumns, MVI_FLAG también se puede pasar a IMAPITable::SortTable en el parámetro lpSortCriteria y IMAPITable::Restrict en el miembro ulPropTag del parámetro lpRestriction . Cuando se pasa el MVI_FLAG, SortTable funciona de forma similar a SetColumns, agregando una fila por cada valor de la columna multivalor y ordenando en los valores únicos de las instancias. Se agrega una fila para cada valor.
Sin embargo, Restrict no expande la columna multivalor en filas calculadas adicionales. Una columna multivalor con el conjunto de MVI_FLAG indica al proveedor de servicios que use esa columna para restringir la tabla. Si hay un valor de propiedad en la restricción, debe ser una etiqueta de propiedad de valor único idéntica a la que devolvería IMAPITable::QueryRows para la columna.
Los implementadores de tabla solo son necesarios para admitir el tipo predeterminado de presentación y pueden devolver el valor MAPI_E_TOO_COMPLEX cuando un llamador solicita la otra alternativa. La capacidad de admitir ambos tipos de presentación es más importante para los proveedores de almacén de mensajes que implementan tablas de contenido de carpetas.