我先将记录集指针定位待修改的数据项,
sql.Format("SELECT * FROM 员工信息表 WHERE 员工号 = '%s' " , ST_NO);
m_pRecordset_OLD = m_pConnection->Execute( _bstr_t(sql) , &RecordsAffected , adCmdText);
再用下面方法进行数据字段的更新。
m_pRecordset->PutCollect("性别" , _bstr_t(gander));
m_pRecordset->PutCollect("出生日期" , _bstr_t(birthday));
m_pRecordset->PutCollect("身份证号" , _bstr_t(ID));
m_pRecordset->PutCollect("手机号" , _bstr_t(phone));
m_pRecordset->Update(); 但运行总出现 Runtime Library的错误对话框,我不知道为什么,求解释!!

解决方案 »

  1.   

    m_pRecordset->Edit();//加这句先允许编辑或告诉要编辑,再修改,修改完后再更新
    m_pRecordset->PutCollect("性别" , _bstr_t(gander));
    m_pRecordset->PutCollect("出生日期" , _bstr_t(birthday));
    m_pRecordset->PutCollect("身份证号" , _bstr_t(ID));
    m_pRecordset->PutCollect("手机号" , _bstr_t(phone));
    m_pRecordset->Update();  
      

  2.   

    一般我个人是用
    update直接更改.
      

  3.   


    pRecordset 只有 EditMode方法, 没有Edit呀。。
      

  4.   


    我试了, 用
    sql.Format("UPDATE 员工信息表 SET 性别 = '%s' WHERE 员工号 = '%s' " , gander , NO);
    m_pRecordset_OLD = m_pConnection->Execute( _bstr_t(sql) , &RecordsAffected , adCmdText);一样弹出那个错误对话框! 求解释
      

  5.   

    http://www.codefans.net/soft/16977.shtml
    你下载这个例子看看
    另外,你用m_pRecordset->GetCount()(类似这个函数,就是取得有多少条记录数)看看有为有记录,如果没有肯定是错的,如果有,你就先用MoveFirst()来移动到第一条记录再修改
      

  6.   


    我添加 和 修改都用的是
    m_pRecordset->PutCollect("性别" , _bstr_t(gander));
    m_pRecordset->PutCollect("出生日期" , _bstr_t(birthday));
    m_pRecordset->PutCollect("身份证号" , _bstr_t(ID));
    m_pRecordset->PutCollect("手机号" , _bstr_t(phone));
    m_pRecordset->Update();   
    这种句式, 唯一不同的是添加我把SQL语句置为“SELECT * FROM 员工信息表”然后m_pRecordset_NEW->AddNew(); 添加新条目。为什么我添加没问题, 就修改有问题!  求解释!!
      

  7.   


    这里我的并没有出现问题啊..
    捕获一下错误信息
    你看下是什么错误.. 有可能是别的错误.. 语句是没什么问题...
    给你看下我的..
    UpdateData();
    CString sql;
    CString sex;
    if(m_isex==0)
    sex="男";
    else sex="女";
    sql.Format("update test set NAME = '%s',SEX='%s',TEL='%s',QQ='%s',Address='%s' where ID = %d",m_name,sex,m_tel,m_qq,m_address,m_nID);
    CADO m_ado;
    try
    {
    m_ado.ADOinit();//打开连接对像
    m_ado.Execute(sql);
    MessageBox("修改成功!","提示");
    m_ado.CloseConn();//关闭连接对像
    }
    catch(_com_error e)
    {
    MessageBox(e.Description());
    return;
    }_RecordsetPtr CADO::Execute(CString sql)//执行SQl语句
    {
    try
    {
    if(m_pConnection->State==adStateOpen)
    return m_pConnection->Execute(_bstr_t(sql),NULL,adCmdText);
    }
    catch(_com_error e)
    {
    AfxMessageBox(e.Description());
    }
    return NULL;
    }其它的就不知道是什么问题了..我上面是没什么问题的..
      

  8.   

    怪了,昨天用sql语句还不行, 今天又好了但我用那种方法还是不行, 到底是什么情况~~~~
    我也估计可能是数据库有什么冲突了,不是代码的问题,因为没捕到错误信息, 直接就弹出Runtime Library的错误对话框, 但我现在不知道是哪错了
      

  9.   


    我只是用sql语句更新可以了, 
    但我这种方法更新依旧不行~ m_pRecordset->PutCollect("性别" , _bstr_t(gander));
    你给的例子我看了, 跟我的差不多呀~