MSDN中说CRecordset是只读的,怎样使CRecordset对象变为可编辑?CDatabase db;
db.OpenEx( _T( "DSN=ttt;UID=sa;PWD=;" ),
CDatabase::noOdbcDialog);CtttSet set(&db);  //CtttSet 是从CRecordset派生的
if(!set.Open(CRecordset::snapshot,
"Select * From tttView")) return FALSE;set.Edit();
set.m_stationip="200.200.200.6";
set.Update();set.Close();
db.Close();Update();出错:记录集只读

解决方案 »

  1.   

    你建立DSN的时候,是否选择了只读?以98下ACCESS为例:你建立好DSN后,编辑 该DSN,有一个“高级”点开后有一个“只读”确认没有打勾
      

  2.   

    我的DSN是连接SQL SERVER的,没有只读选项。
      

  3.   

    我的DSN是连接SQL SERVER的,没有只读选项。
      

  4.   

    是否使用了bulk row fetching,如果是的话,会出错,因为这种机制一次取出多条数据,无法知道edit,update哪一个
      

  5.   

    你把这个CRecordset::snapshot 改成 CRecordset::dynaset 试试。
    另:m_stationip在数据库的长度够长吗?如果长度不够,也会报read only错误
      

  6.   

    早上起来突然想到把CRecordset::snapshot改为CRecordset::dynaset试了试,正如vtable9999(肝肝肝肝) 所言,一切OK!但是我始终想不明白snapshot型记录集为什么是只读的,这个选项好象与读取类型无关。