共用方式為


IMAPITable::SeekRow

適用於:Outlook 2013 |Outlook 2016

將游標移至資料表中的特定位置。

HRESULT SeekRow(
BOOKMARK bkOrigin,
LONG lRowCount,
LONG FAR * lplRowsSought
);

參數

bkOrigin

[in]識別搜尋作業起始位置的書籤。 您可以使用 IMAPITable::CreateBookmark 方法建立書籤,或者可以傳遞下列其中一個預先定義的值。

BOOKMARK_BEGINNING

從數據表的開頭開始搜尋作業。

BOOKMARK_CURRENT

從數據指標所在數據表中的數據列開始搜尋作業。

BOOKMARK_END

從數據表結尾開始搜尋作業。

lRowCount

[in]要移動之數據列數目的帶正負號計數,從 bkOrigin 參數所識別的書籤開始。

lplRowsSought

[out]如果 lRowCount 是輸入的有效指標, lplRowsSought 會指向搜尋作業中已處理的數據列數目,其正負號會指出搜尋的方向、向前或向後。 如果 lRowCount 為負數, 則 lplRowsSought 為負數。

傳回值

S_OK

搜尋作業成功。

MAPI_E_BUSY

另一項作業正在進行中,無法啟動搜尋數據列的作業。 應該允許進行中的作業完成,或者應該停止作業。

MAPI_E_INVALID_BOOKMARK

bkOrigin 參數中指定的書籤無效,因為它已被移除,或是因為超過最後一個要求的數據列。

MAPI_W_POSITION_CHANGED

呼叫成功,但 bkOrigin 參數中指定的書籤已不再設定為與上次使用時相同的數據列。 如果尚未使用書籤,就不再與建立書籤時的位置相同。 傳回此警告時,應將呼叫視為成功處理。 若要測試此警告,請使用 HR_FAILED 宏。 如需詳細資訊,請 參閱使用宏進行錯誤處理

註解

IMAPITable::SeekRow 方法會建立數據指標的新BOOKMARK_CURRENT位置。 lRowCount 參數會指出游標行動的數據列數目和移動方向。

如果產生的位置超出數據表的最後一個數據列,則數據指標會位於最後一個數據列之後。 如果產生的位置位於數據表的第一列之前,則數據指標會位於第一列的開頭。

實作者注意事項

如果 bkOrigin 所指向的數據列已不存在於數據表中,而且您無法建立書籤的新位置,請傳回MAPI_E_INVALID_BOOKMARK。 如果指向的數據列by_bkOrigin_no較長,而且您可以建立書籤的新位置,請傳回MAPI_W_POSITION_CHANGED。

您仍然可以使用指向折疊出數據表檢視之數據列的書籤。 如果呼叫端嘗試將游標移至這類書籤,請將游標移至下一個可見的數據列,並傳回MAPI_W_POSITION_CHANGED。

您可以在使用時或數據列折疊時,將折疊位置的書籤移出檢視範圍。 如果在折疊數據列時移動書籤,請在書籤中保留一點,指出書籤自上次使用后是否已移動,或是自從建立書籤之後從未使用過書籤。

呼叫者注意事項

若要指出 SeekRow 的回溯移動,請在 lRowCount 中傳遞負值。 若要搜尋數據表的開頭,請在 lRowCount 中傳入零,並在 bkOrigin 中傳BOOKMARK_BEGINNING值。

如果數據表中有許多數據列, SeekRow 作業可能會變慢。 如果您需要在 lplRowsSought 參數的內容中傳回數據列計數,則效能也會受到影響。

SeekRow 會傳回 在 lRowCount 所指向的變數中,實際搜尋的數據列數目為正數或負數。 在一般作業中,除非搜尋到達數據表的開頭或結尾,否則它應該會針對 lRowsSought 傳回與傳入的 lplRowsSought 相同的值。

請勿將 lRowCount 設定為大於 50 的數位。 若要搜尋更多數據列,請使用 IMAPITable::SeekRowApprox 方法。

MFCMAPI 參考

如需 MFCMAPI 範例程式代碼,請參閱下表。

檔案 Function Comment
MAPIProcessor.cpp
CMAPIProcessor::P rocessMailboxTable
MFCMAPI 會使用 IMAPITable::SeekRow 方法,在處理之前找出數據表的開頭。

另請參閱

IMAPITable::CreateBookmark

IMAPITable::FindRow

IMAPITable::QueryRows

IMAPITable::SeekRowApprox

IMAPITable:IUnknown

MFCMAPI 作為程式碼範例