if(OrderSet.IsOpen())
   OrderSet.Close();
OrderSet.Open(CRecordset::snapshot,"SQL语句");你这样打开就可以了。同时,你在构造CSet OrderSet时要把该记录集所指向的数据库赋值给它,如下所示
CDatabase db;
db.Open("");
CSet OrderSet(&db);

解决方案 »

  1.   

    你应该让我们看看你打开记录集的原码。
    可能是你用CRecordSet::Open()时第三个参数没设好。如果你不知倒选那个参数,那么就用缺省值CRecordSet::none.假设你的数据源名为"test"
    那么打开一个记录集的语句应写为
    if(!OrderSet.Open(CRecordset::snapshot,"test",CRecordset::none))
    {
      //Open error
    }
    else
    {
      //Open success
    }
    这样就不应该出现记录集只读的信息
    另外的可能是你的数据库正在被其他应用程序使用,而且是Exclusive方式,这样也会出现此问题