你在Open的时侯要设为添加:dbAppendOnlyvirtual void Open( int nOpenType = AFX_DAO_USE_DEFAULT_TYPE, LPCTSTR lpszSQL = NULL, int nOptions = 0 );
throw( CDaoException, CMemoryException );另外如果你数据库不多的话有个简单方法
CDatabase m_dbConn;
m_dbConn.Open("ODBC;DSN=xxxx;UID=;PWD=")
m_sql="insert xx(x) values('x');
m_dbConn.ExecuteSQL(m_sql)

解决方案 »

  1.   

    要以动态集的方式打开表,看一个你的记录集的构造器最后有没有这句话:
    m_nDefaultType = dynaset;
    如果没有,加上去。//   在//}}AFX_FIELD_INIT之后
    或可在Open的时候指定第一个参数为CRecordset::dynaset   
      

  2.   

    靠,我也碰到类似的问题,CanUpdate()总是false
      

  3.   

    我仔细的看了 自己 的 代码,正如happylaodu兄的我的文件上已经有.dynaset
    由此看来会不会是 在SQL Server上出了问题,可我实在是找不出问题了.快帮帮我!  
      

  4.   

    而且DAO 不易使用在sql server上,
    即使加了主索引,一样会报odbc call-failed,
    还是用ado来写吧。
      

  5.   

    把你的代码贴出来看看,尤其是Open()部分