源代码:
    void CStuCourse::OnOK() 
{
// TODO: Add extra validation here _RecordsetPtr pRs=NULL;
    _ConnectionPtr pConnection=NULL; HRESULT hr;
CString TempStr;
_bstr_t strCnn(SQLCONSTR);
try
{
UpdateData(TRUE);
pConnection.CreateInstance(__uuidof(Connection));
hr=pConnection->Open(strCnn,"","",NULL);
pRs.CreateInstance(__uuidof(Recordset)); CString StrKCH;
GetDlgItemText(IDC_COMBOKCH,StrKCH); CString SqlStr;
SqlStr.Format("select * from kc where kch='%s'",StrKCH);
pRs->Open((_variant_t)SqlStr,_variant_t((IDispatch *)pConnection,true),adOpenKeyset,adLockOptimistic,adCmdText);
if(!pRs->adoEOF)
{
int index=m_StuKCH.GetCurSel();
m_StuKCH.GetLBText(index,TempStr);
pRs->PutCollect("KCH",_variant_t(TempStr));
pRs->PutCollect("KCM",_variant_t(m_StuKCM));
pRs->PutCollect("XQ",_variant_t((long)m_StuXQ));
pRs->PutCollect("XS",_variant_t((long)m_StuXS));
pRs->PutCollect("XF",_variant_t((long)m_StuXF));
pRs->Update();
}
else
{   
pRs->AddNew();
int index=m_StuKCH.GetCurSel();
m_StuKCH.GetLBText(index,TempStr);
pRs->PutCollect("KCH",_variant_t(TempStr));
pRs->PutCollect("KCM",_variant_t(m_StuKCM));
pRs->PutCollect("XQ",_variant_t((long)m_StuXQ));
pRs->PutCollect("XS",_variant_t((long)m_StuXS));
pRs->PutCollect("XF",_variant_t((long)m_StuXF));
pRs->Update();
}
pRs->Close();
pConnection->Close();
m_StuCourseADO.SetRecordSource("select * from kc");
m_StuCourseADO.Refresh();
m_StuCourseDG.ReBind();
m_StuCourseDG.Refresh();
AfxMessageBox("更新成功!");
}
catch(_com_error &e)
{
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description()); CString sError;
sError.Format("Source:%Description:%s",(LPCSTR)bstrSource,(LPCSTR)bstrDescription); AfxMessageBox(sError);
pConnection->Close();
}
CDialog::OnOK();
}

解决方案 »

  1.   

    OnOK是要关闭对话框了,这时更新谁的控件?
      

  2.   

    CDialog::OnOK();
    关闭了对话框
      

  3.   

    调试一下具体哪步出错
    另外操作数据库可以看看参考这篇文章
    http://blog.csdn.net/xianglitian/article/details/5617173
      

  4.   

    你的代码中看不出异常是怎么发生的。
    pRs->AddNew();
     int index=m_StuKCH.GetCurSel();
     m_StuKCH.GetLBText(index,TempStr);
     pRs->PutCollect("KCH",_variant_t(TempStr));
     pRs->PutCollect("KCM",_variant_t(m_StuKCM));
     pRs->PutCollect("XQ",_variant_t((long)m_StuXQ));
     pRs->PutCollect("XS",_variant_t((long)m_StuXS));
     pRs->PutCollect("XF",_variant_t((long)m_StuXF));
     pRs->Update();如果是数据库插入时引起的异常。你这里的AddNew和UpDate函数我们也看不到,建议单步跟踪一下,最后在insert的语句查看SQL语句是否有问题。
      

  5.   

    新增时没插入主键吧?
    你加个catch(...)试试