deliverRst是记录集类,代码如下:
   
         deliverRst.AddNew ();
向表中添加一行记录;
deliverRst.Update ();          运行到Update()时,出现异常,请问是何原因?

解决方案 »

  1.   

    是因为有些字段如IDENTITY等类型的不允许更新,但是缺要赋值更新,还有就是有些字段不允许空值,缺赋给了空值等,因为update是更新一条记录,所以当一个或多个字段更新失败的时候,就会出现“多步OLE DB操作产生错误,请检查每一个OLE DB状态值”
      

  2.   

    m_recordset->AddNew();
    m_recordset->put_Collect(vFieldName,vFieldValue);
    m_recordset->Update();
    AddNew后要至少指定一个字段值。才能update
      

  3.   

    我的错误提示是:Unhandled exception in SMSServer.exe(MFC42D.DLL):0xC0000005:Access Violation
      

  4.   

    pRstEmployee->Open("Employee", 
                _variant_t((IDispatch *)pConnection,true), adOpenKeyset,
                adLockOptimistic, adCmdTable);
    是这样打开表的吗,还是查询呢
      

  5.   

    用 if (deliverRst.CanAppend())
    {
    try
    {
    deliverRst.AddNew();
    }
    catch (CDBException* e)
    {
    //show e->m_strError);
    e->Delete();
    return -1;
    }
    //向表中添加一行记录; try
    {
    this->m_EMS_FileSet.Update();
    }
    catch (CDBException* e)
    {
    //send e->m_strError;
    e->Delete();
    return -2;
    }
    return 0;
    }
    else
    {
    //send ("Can`t append table");
    return 1;
    };
    万无一失的方法,能捕捉到错误