visual open movefirst fields example asp c++ com ado

c++ - open - ADO Recordset-> EndOfFile que me da_com_error cuando Empty Recordset



recordset fields (0)

Estoy usando ADO, y obtengo un error de COM muy extraño.

Así que simplemente estoy ejecutando un proceso almacenado usando ADO CommandPtr y guardándolo en un Recordset.

Esto es lo que estoy haciendo:

_ConnectionPtr Connptr; //Instantiate ConnectionPtr... _CommapndPtr CommPtr; CommPtr.CreateInstance(__uuidof(Command)); CommPtr->CommandType = adCmdText; CommPtr->ActiveConnection = ConnPtr; CommPtr->CommandText = "Execute MyDb..MyStoredProc"; _RecordsetPtr RecPtr; RecPtr.CreateInstance(__uuidof(Recordset)); RecPtr->CursorLocation = adUseClient; RecPtr->CacheSize = 150; RecPtr = CommPtr->Execute(NULL, NULL, adOptionUnspecified); //RecPtr = Empty Recordset while (!RecPtr->EndOfFile) { //ERROR HAPPENS HERE!!! //Do something RecPtr->MoveNext(); }

Por lo tanto, se supone que mi procedimiento almacenado devuelve un conjunto de registros vacío (0 filas).

Pero luego, cuando compruebo si el conjunto de registros ha llegado al final (que simplemente debería devolver verdadero si está vacío). Me sale un error de com.

Cuando capté el error com e imprimí, obtuve esto.

Code = -2147217849 Meaning = IDispatch error #3153 Source = NULL

Lo cual no me dice mucho.

No entiendo por qué RecPtr->EndofFile está arrojando un error com, ya que simplemente debería devolver verdadero / falso.

Dudo mucho que el error sea causado porque estoy haciendo algo mal al inicializar los objetos de Conexión y Comando. (De ser así, entonces habría recibido el error al ejecutar el comando).

¿Alguna idea sobre lo que podría estar causando esta excepción?