我做好了一个form,里面的edit box已经绑定到数据库,我想由用户输入添加一条记录,按add按钮,然后edit box变为空,然后用户输入数据,然后再按add,就把数据加进去,我用了书里的语句
m_pSet->AddNew();
UpdateData(FALSE);
但按了add之后,数据库没变化,我又在后面加了一句m_pSet->Update();
但还是没用,请求正确的语句,已经确认数据库不是只读的问题

解决方案 »

  1.   

    UpdateData(TRUE);
    if(m_pSet->CanUpdate())
    m_pSet->Update();
    //m_IsAdd=FALSE;
    m_pSet->Requery();
    UpdateData(FALSE);
      

  2.   

    UpdateData(TRUE);
    if(m_pSet->CanUpdate())
    m_pSet->Update();
    //m_IsAdd=FALSE;
    m_pSet->Requery();
    UpdateData(FALSE);不行呵,按add时候,提示说更新或删除的企图失败了。
    你是不是有用了“时间”的变量?
    如“出生日期”之类的。没有
      

  3.   

    你要添加的数据库表是否有字段不可为空,当有不可为空的项时,你要执行添加或修改
    就会出现错误,可将数据库表的设计中使字段可为空,否则必须得到edit控件中的内容才可以进行添加,如下在你的m_pSet->ADDNEW();
          
        CString str;
        后要加入CWnd::GetdlgItemText(IDC_EDIT1,str);//IDC_EDIT1你的edit控件的ID
           m_pSet->m_name=str;//m_name是你要添加数据库的某一列字段,在程序的...Set类下可以找到由Class wizard生成的相关内容
                              //要注意str的类型要和你的m_name类型相符才可以赋值
           m_pSet->UPdata();
      

  4.   

    UpdateData(TRUE);
    //例如这里加上
    m_pSet->m_nAge = 你的edit box变量
    m_pSet->m_strName = 你的edit box变量
    ......
    ......
    if(m_pSet->CanUpdate())
       m_pSet->Update();
    //m_IsAdd=FALSE;
    m_pSet->Requery();
    UpdateData(FALSE);
      

  5.   

    m_pSet->m_nAge = 你的edit box变量
    m_pSet->m_strName = 你的edit box变量
    这两句中的m_nAge和m_strName有何不同之处,麻烦了
      

  6.   

    还有,你们上面的语句居然没有m_pSet->AddNew(),这样也能添加数据?
      

  7.   

    AddNew()后要设置各个字段值。
    注意主关键字字段要设置正确。(如果不是采用自动编号之类的话)
    如果某个字段你实在是不想马上设值,需要在数据库文件中把那个字段的
    必填属性设为false, 允许为NULL设为TRUE ( 如果数据库有该属性)
    最后才是Update()
      

  8.   

    噢,“这两句中的m_nAge和m_strName有何不同之处”,m_nAge和m_strName只是一个假设的变量名。
    例如你的表绑定为
    年龄   m_nAge
    姓名   m_strName
    ..............
    ................
    你的Edit控件变量相对为
    m_EditAge
    m_EditName
    则为:
    UpdateData(TRUE);
    m_pSet->m_nAge = m_EditAge;
    m_pSet->m_strName = m_EditName;
    ......
    可能我讲得不太明白,你可以找一本专门是VC的数据库编程,就只看看MFC ODBC那里就可以了。
      

  9.   

    我也碰到类似问题了,add之后提示记录集是只读的,我就用Open()打开的缺省应该就是可更新的啊~!郁闷啊
      

  10.   

    m_pSet->addnew();
    m_pset->m_name=m_Name;//控件变量


    m_pset->update();
    m_pset->requry();
      

  11.   

    http://www.vctop.com/View.Asp?ID=453&CateID=1