IMAPITable::Restrict
Hace referencia a: Outlook 2013 | Outlook 2016
Aplica un filtro a una tabla, lo que reduce el conjunto de filas a solo las filas que coinciden con los criterios especificados.
HRESULT Restrict(
LPSRestriction lpRestriction,
ULONG ulFlags
);
Parameters
lpRestriction
[in] Puntero a una estructura SRestriction que define las condiciones del filtro. Al pasar NULL en el parámetro lpRestriction , se quita el filtro actual.
ulFlags
[in] Máscara de bits de marcas que controla el tiempo de la operación de restricción. 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 evaluación del filtro hasta que se requieran los datos de la tabla.
Valor devuelto
S_OK
El filtro se aplicó correctamente.
MAPI_E_BUSY
Hay otra operación en curso que impide que se inicie la operación de restricción. Se debe permitir que se complete la operación en curso o se debe detener.
MAPI_E_TOO_COMPLEX
La tabla no puede realizar la operación porque el filtro determinado al que apunta el parámetro lpRestriction es demasiado complicado.
Comentarios
El método IMAPITable::Restrict establece una restricción o filtro en una tabla. Si hay una restricción anterior, se descarta y se aplica la nueva. La aplicación de una restricción no afecta a los datos subyacentes de una tabla; simplemente modifica la vista limitando las filas que se pueden recuperar a las filas que contienen datos que cumplen la restricción.
Hay varios tipos diferentes de restricciones, cada una de las cuales se describe con una estructura diferente. La estructura SRestriction contiene dos miembros: un valor que indica el tipo de restricción y la estructura específica aplicable a ese tipo.
Las notificaciones de las filas de tabla que están ocultas de la vista mediante llamadas a Restrict nunca se generan.
Una restricción de propiedad en una propiedad multivalor funciona como una restricción en una propiedad de un solo valor. Una propiedad multivalor que se va a usar en una restricción de propiedad debe tener establecida la marca MVI_FLAG. Si no tiene esta marca establecida, se trata como una tupla totalmente ordenada. Una comparación de dos columnas multivalor compara los elementos de columna en orden, informando de la relación de las columnas en la primera desigualdad. La igualdad solo se devuelve si las columnas comparadas 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.
Para obtener más información sobre las restricciones, vea Acerca de las restricciones.
Nota:
Si crea consultas dinámicas para buscar datos en el servidor, use el método FindRow en lugar de usar el método Restrict y el método QueryRows juntos . El método Restrict crea una vista almacenada en caché que se usa para evaluar todos los mensajes agregados o modificados en la carpeta base. Si una aplicación cliente usa el método Restrict para cada consulta dinámica, se creará una vista almacenada en caché para cada consulta.
Notas para los llamadores
Para descartar la restricción actual sin crear una nueva, pase NULL en lpRestriction.
Si hay otra llamada a tabla asincrónica en curso, lo que hace que Restrict devuelva MAPI_E_BUSY, puede llamar a IMAPITable::Abort para detener la llamada.
Restrict funciona sincrónicamente a menos que establezca una de las marcas. Si establece la marca de TBL_BATCH, Restringir pospone la evaluación de la restricción a menos que solicite los datos. Si se establece la marca de TBL_ASYNC, Restrictfunciona de forma asincrónica, lo que podría devolverse antes de la finalización de la operación.
Todos los marcadores de una tabla se descartan cuando se realiza una llamada a Restrict y BOOKMARK_CURRENT, la posición actual del cursor, se establece al principio de la tabla.
Si intenta imponer una restricción de propiedad en una propiedad que no está en el conjunto de columnas de la tabla, los resultados no están definidos. Siempre que no esté seguro de si se admite una propiedad en una tabla, combine la restricción de propiedad con una restricción exists. La restricción existe comprueba la existencia de la propiedad antes de intentar imponer la restricción de propiedad.
No espere recibir una notificación de tabla en una fila que se ha filtrado de una tabla debido a una restricción.
Referencia de MFCMAPI
Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.
Archivo | Función | Comment |
---|---|---|
ContentsTableListCtrl.cpp |
CContentsTableListCtrl::ApplyRestriction |
MFCMAPI usa el método IMAPITable::Restrict para establecer una restricción en una tabla. |