这段代码是《Visual C++6.0数据库编成大全》第5章开发ODBC工程的一段代码,用来添加记录的。但我就是不能成功,怎么回事?
void CODBCDepartmentView::OnRecordAddrecord() 
{
CRecordsetStatus rStatus;
m_pSet->GetStatus(rStatus);
if(rStatus.m_lCurrentRecord>=0){
UpdateData(TRUE);
if(!m_bAddingRecord){
m_pSet->Edit();
}
m_pSet->Update();
m_pSet->MoveLast();
}
m_bAddingRecord=TRUE;
m_pSet->SetFieldNull(NULL);
m_pSet->AddNew();
UpdateData(FALSE);
}

解决方案 »

  1.   

    m_pSet->AddNew();后面是不是要加上
    m_pSet->Update();
      

  2.   

    还有
    if(!m_bAddingRecord){
    m_pSet->Edit();
    }
    后面总觉得缺了点什么
    else{  }
    直接update好像有点不妥
      

  3.   

    我觉得后面新增记录时没完啦,m_pSet->AddNew();
    if( !m_pSet.CanAppend( ) )
        return FALSE;                      // no field values were set
    m_pSet.AddNew( );
    m_pSet.xxx = xxx;  -->  要赋值呀
    m_pSet.xxx = xxx;
    if( !m_pSet.Update( ) )
    {
        AfxMessageBox( "Record not added; no field values were set." );
        return FALSE;
    }
    这句话对你可能有帮助:AddNew prepares the recordset to act as an edit buffer. All field data members are set to the special value Null and ed as unchanged so only changed (“dirty”) values will be written to the data source when you callUpdate.