在VC程序中,使用ADO方式连接数据库!需要对ADO Recordset中的记录进行移动操作!
在MSDN中有说明,将ADO记录集设置为动态记录集,则可以进行任意的移动!
但是我将Recordset的CursorType设置为adOpenDynamic(动态游标),
可是在调用MovePrevious()函数,还是出现异常了!
请问各位,该如何设置Recordset的属性?

解决方案 »

  1.   

    m_pRecordset->CursorLocation=adUseClient;
    m_pRecordset->CursorType = adOpenKeyset;
      

  2.   

    我按楼上的设置的记录集的属性怎么还不行啊?
    还是一调用MovePrevious()函数就出现异常了!甚至调用MoveLast()函数也出现了异常!源码如下:
    try{
     m_pRecordset->CursorLocation=adUseClient;
     m_pRecordset->CursorType = adOpenKeyset;
     m_pRecordset = m_pDBConn->Execute((_bstr_t)szSQLString,NULL,0);
     m_pRecordset->MoveLast();
    }catch(...){
     AfxMessageBox("Exception!");
    }当运动到m_pRecordset->MoveLast()还是出现异常!
      

  3.   

    你的CATCH里面做些事情啊。
    try{
    }catch(_com_error &e)
    {
       MessageBox(e.Description());
    }
    看看是什么错误。
      

  4.   

    您好,我按楼上的输出错误,
    调用MoveLast(),显示的错误描述是"行集不支持反向提取。"
    调用MovePrevious(),显示的错误描述是"在此环境中不允许操作"。请问,该怎么设置记录集的属性
      

  5.   

    用RecordSet->Open执行SQL试试CursorType换成adOpenStatic
      

  6.   

    m_pRecordset = m_pDBConn->Execute((_bstr_t)szSQLString,NULL,0);
    Connection.Execute返回的Recordset是************* ReadOnly ********** 的。
    你使用 Recordset.Open 就没问题了。
      

  7.   

    在进行MOVE的时候判断记录集是否为空,或EOF或BOF
      

  8.   

    谢了,已解决!
    RecordSet->Open调用则解决了!