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?