ODBC для MFC - проблема с фечем на stored procedure
От: BAndy Удмуртия birep18.com
Дата: 11.02.03 08:19
Оценка:
Привет всем!
Есть такой пример:
#include "stdafx.h"
#include <afxdb.h>            // MFC ODBC database classes

int WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
    CDatabase    db;
    db.OpenEx("DSN=SQL_Server");

    CRecordset    rs(&db);
    rs.Open(CRecordset::snapshot, "{call sp_who()}");

    try    {
        rs.MoveLast();
    }
    catch (CDBException* e) {
        AfxMessageBox(e->m_strError + "\n" + e->m_strStateNativeOrigin);
        return 0;
    }

    AfxMessageBox("Ok!");
    return 0;
}


Результат: "Fetch type out of range State:S1106,Native:0,Origin:[Microsoft][ODBC SQL Server Driver]"
Весьма неожиданный, особенно если много раз использвалось то же, но для обычного Select при открытии рекордсета (например "Select * from sysobjects")

Пробовал разные варианты открытия рекордсета — результат не изменился.
Ошибку вызывает MoveLast. Такая же реакция на MoveFirst, хотя MoveNext проходит без ошибки.
Видимо рекордсет от SP чем-то отличается от обычного Select и передвигаться по нему можно только в одну сторону.

Если у кого-нибудь есть дельные соображения как заставить rs двигаться не только вперед, поделитесь пжалста.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.