IMAPITable::SeekRow
Hace referencia a: Outlook 2013 | Outlook 2016
Mueve el cursor a una posición específica de la tabla.
HRESULT SeekRow(
BOOKMARK bkOrigin,
LONG lRowCount,
LONG FAR * lplRowsSought
);
Parameters
bkOrigin
[in] Marcador que identifica la posición inicial de la operación de búsqueda. Se puede crear un marcador mediante el método IMAPITable::CreateBookmark o se puede pasar uno de los siguientes valores predefinidos.
BOOKMARK_BEGINNING
Inicia la operación de búsqueda desde el principio de la tabla.
BOOKMARK_CURRENT
Inicia la operación de búsqueda desde la fila de la tabla donde se encuentra el cursor.
BOOKMARK_END
Inicia la operación de búsqueda desde el final de la tabla.
lRowCount
[in] Recuento con signo del número de filas que se van a mover, empezando por el marcador identificado por el parámetro bkOrigin .
lplRowsSought
[out] Si lRowCount es un puntero válido en la entrada, lplRowsSought apunta al número de filas que se procesaron en la operación de búsqueda, cuyo signo indica la dirección de la búsqueda, hacia delante o hacia atrás. Si lRowCount es negativo, lplRowsSought es negativo.
Valor devuelto
S_OK
La operación de búsqueda se realizó correctamente.
MAPI_E_BUSY
Hay otra operación en curso que impide que se inicie la operación de búsqueda de filas. Se debe permitir que se complete la operación en curso o se debe detener.
MAPI_E_INVALID_BOOKMARK
El marcador especificado en el parámetro bkOrigin no es válido porque se quitó o porque está más allá de la última fila solicitada.
MAPI_W_POSITION_CHANGED
La llamada se realizó correctamente, pero el marcador especificado en el parámetro bkOrigin ya no se establece en la misma fila que cuando se usó por última vez. Si no se ha usado el marcador, ya no está en la misma posición que cuando se creó. Cuando se devuelve esta advertencia, la llamada debe controlarse correctamente. Para probar esta advertencia, use la macro HR_FAILED . Para obtener más información, vea Uso de macros para el control de errores.
Comentarios
El método IMAPITable::SeekRow establece una nueva posición BOOKMARK_CURRENT para el cursor. El parámetro lRowCount indica el número de filas que mueve el cursor y la dirección del movimiento.
Si la posición resultante está más allá de la última fila de la tabla, el cursor se coloca después de la última fila. Si la posición resultante está antes de la primera fila de la tabla, el cursor se coloca al principio de la primera fila.
Notas a los implementadores
Si la fila a la que apunta bkOrigin ya no existe en la tabla y no se puede establecer una nueva posición para el marcador, devuelve MAPI_E_INVALID_BOOKMARK. Si la fila a la que apunta by_bkOrigin_no existe más tiempo y puede establecer una nueva posición para el marcador, devuelva MAPI_W_POSITION_CHANGED.
Todavía se puede usar un marcador que apunte a una fila contraída fuera de la vista de tabla. Si el autor de la llamada intenta mover el cursor a este marcador, mueva el cursor a la siguiente fila visible y devuelva MAPI_W_POSITION_CHANGED.
Puede mover los marcadores de las posiciones contraídas fuera de la vista, ya sea en el momento de su uso o en el momento en que se contrae la fila. Si un marcador se mueve en el momento en que la fila está contraída, mantenga un poco en el marcador que indica si el marcador se ha movido desde su último uso o, si nunca se ha usado, desde su creación.
Notas para los llamadores
Para indicar un movimiento hacia atrás para SeekRow, pase un valor negativo en lRowCount. Para buscar al principio de la tabla, pase cero en lRowCount y el valor BOOKMARK_BEGINNING en bkOrigin.
Si hay muchas filas en la tabla, la operación SeekRow puede ser lenta. El rendimiento también puede verse afectado si necesita que se devuelva un recuento de filas en el contenido del parámetro lplRowsSought .
SeekRow devuelve el número de filas realmente buscadas, positivas o negativas, en la variable a la que apunta lRowCount. En la operación normal, debe devolver el mismo valor para lplRowsSought que se pasó para lRowCount, a menos que la búsqueda llegara al principio o al final de la tabla.
No establezca lRowCount en un número mayor que 50. Para buscar a través de un mayor número de filas, use el método IMAPITable::SeekRowApprox .
Referencia de MFCMAPI
Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.
Archivo | Función | Comment |
---|---|---|
MAPIProcessor.cpp |
CMAPIProcessor::P rocessMailboxTable |
MFCMAPI usa el método IMAPITable::SeekRow para buscar el principio de la tabla antes del procesamiento. |