Здравствуйте Максим Алексейкин, Вы писали:
МА>Попробуй результирующему рекордсету установить свойства до вызова Command->Execute
А это не срабатывает даже если использовать raw_Execute(), все равно возвращается _Recordset с курсором adOpenForwardOnly и соответственно, _RecordsetPtr->RecordCount() всегда возвращает -1, а не реальное число записей.
Вот мой код:
// Попытка получить "полноценный" Recordset при использовании хранимой процедуры через Command
// Все проверки ошибок в этом примере вырезаны
...
pCommand.CreateInstance(__uuidof(Command));
pCommand->ActiveConnection = m_pConnection;
pCommand->CommandType = adCmdStoredProc;
pCommand->CommandText = _bstr_t(ProcName);
pRecordset.CreateInstance(__uuidof(Recordset));
pRecordset->CursorLocation = adUseClient;
pRecordset->CursorType = adOpenKeyset; // Сбрасывается!!!
pRecordset->LockType = adLockBatchOptimistic;
struct _Recordset* PtrRecordset = pRecordset.GetInterfacePtr();
pCommand->m_pCommand->raw_Execute(&vtMissing,&vtMissing,adCmdStoredProc,&PtrRecordset);
pRecordset = PtrRecordset;
// Далее проверяем, увы: pRecordset->RecordCount == -1, MovePrevious() не работает
Народ! Наверняка кто-то сталкивался с такой пробемой и как-то ее решал. Подскажите!