共用方式為


TABLE_NOTIFICATION

適用於:Outlook 2013 |Outlook 2016

描述數據表中受到某種事件類型影響的數據列,例如變更或錯誤。 這會導致產生數據表通知。

屬性
標頭檔:
Mapidefs.h
typedef struct _TABLE_NOTIFICATION
{
  ULONG ulTableEvent;
  HRESULT hResult;
  SPropValue propIndex;
  SPropValue propPrior;
  SRow row;
} TABLE_NOTIFICATION;

成員

ulTableEvent

用來表示數據表事件類型的旗標位掩碼。 您可以設定下列旗標:

TABLE_CHANGED

概括指出數據表的相關內容已變更。 數據表的狀態與事件之前一樣。 這表示所有 PR_INSTANCE_KEY (PidTagInstanceKey) 屬性、書籤、目前位置和使用者介面選取專案仍然有效。 重新讀取數據表來處理此事件。 不想要實作豐富數據表通知的服務提供者會傳送TABLE_CHANGED事件,而不是更詳細的事件,以指出特定類型的變更。

TABLE_ERROR

通常在處理異步操作期間發生錯誤。 處理下列方法期間的錯誤可能會產生此事件:

收到TABLE_ERROR事件之後,客戶端無法依賴數據表內容的正確性。 此外,其他變更的暫止通知可能會遺失。 IMAPITable::GetLastError 方法可能不會提供關於錯誤的任何其他信息,因為它是在先前的某個時間點產生,不一定是從最後一個方法呼叫產生。

TABLE_RELOAD

應該重載數據表中的數據。 例如,當基礎數據儲存在資料庫中並取代資料庫時,服務提供者會傳送TABLE_RELOAD。 藉由假設數據表的相關信息仍然有效,並重新讀取數據表來處理此事件。 所有書籤、實例索引鍵、狀態和位置資訊都無效。

TABLE_RESTRICT_DONE

使用 IMAPITable::Restrict 方法呼叫起始的限制作業已完成。

TABLE_ROW_ADDED

新的數據列已新增至數據表,並已儲存對應的物件。 TABLE_ROW_ADDED事件會在呼叫 IMAPIProp::SaveChanges 方法之後產生。

TABLE_ROW_DELETED

數據列已從數據表中移除。 propPrior 成員設定為 NULL。

TABLE_ROW_MODIFIED

數據列已變更。 數據 成員包含數據列的受影響屬性。 多個TABLE_ROW_MODIFIED事件會以它們出現在數據表檢視中的順序傳送。

TABLE_ROW_MODIFIED事件會在對應對象的變更透過 IMAPIProp::SaveChanges 方法的呼叫認可之後傳送。 如果修改過的數據列現在是數據表中的第一個數據列, 則 propPrior 成員中的屬性標記值會 PR_NULL (PidTagNull) 。

TABLE_SETCOL_DONE

已完成使用 IMAPITable::SetColumns 方法呼叫所起始的數據行設定作業。

TABLE_SORT_DONE

使用 IMAPITable::SortTable 方法呼叫起始的數據表排序作業已完成。

hResult

如果 ulTableEvent 成員設定為 TABLE_ERROR,則為已發生錯誤的 HRESULT 值。

propIndex

受影響數據列PR_INSTANCE_KEY屬性的 SPropValue 結構。

propPrior

受影響數據列之前PR_INSTANCE_KEY屬性的 SPropValue 結構。 如果受影響的數據列是數據表中的第一個數據列, 則 propPrior 必須設定為 PR_NULL 而非零。 零不是有效的屬性標記。

描述受影響數據列的 SRow 結構。 所有數據表通知事件都會填入此結構。 對於未傳遞數據列數據的數據表通知事件,SRow 結構的 cValues 成員會設定為零,而 lpProps 成員會設定為 NULL。 因為這個 SRow 結構是唯讀的;如果用戶端想要進行修改,則必須製作其複本。 ScDupPropset 函式可用來複製。

註解

TABLE_NOTIFICATION結構是 NOTIFICATION 結構的信息成員中所包含之結構聯集的成員之一。 當 結構的ulEventType成員設定為 fnevTableModified 時,信息成員會包含TABLE_NOTIFICATION結構。

數據列成員中數據行的順序和類型,會反映產生通知時生效的順序和類型。 產生通知時的順序和類型不一定與傳遞通知時相同。

如需通知的詳細資訊,請參閱下表所述的主題。

主題 描述
MAPI 中的事件通知
通知和通知事件的一般概觀。
處理通知
討論用戶端應如何處理通知。
支援事件通知
討論服務提供者如何使用 IMAPISupport 方法來產生通知。

因為數據表通知是異步的,所以用戶端可以在透過另一種方法瞭解新增數據列之後,收到已新增數據列的通知。 當 IMAPITable::SortIMAPITable::Restrict 或 IMAPITable::SetColumns 方法發生錯誤時,或基礎進程嘗試使用新的或修改過的數據列來更新數據表時,可能會收到TABLE_ERROR事件。

另請參閱