如果程序编译通过了,在执行中出现问题--逻辑错误,如何用VC++6.0中的工具进行查找和调试,怎么正确分析诊断?能举一个例子吗。

解决方案 »

  1.   

    一般性的逻辑错误,如最近我在作数据库的修改时出现逻辑错误,我不知如何去发现和解决。
    具体情况如下:我在EXE程序中,使用基于ADO的对话框,进行数据库的添加、修改。添加正常,而在修改时,编译没问题,可在执行时出现:IDispatch error #3105,这是什么问题?如何发现和解决?
    代码如下:void CRsCgDlg::OnBtnCmupdate() 
    {
    // TODO: Add your control notification handler code here
    if(!UpdateData())
    return;
       

    IADORecordBinding *picRs=NULL;//binding interface decared
    CCustomRs rs;    CString sql_;
      sql_.Format("SELECT * FROM HidKnow  WHERE number='%s'",m_number);
    _bstr_t sql=sql_;
        
    try
    {

    TESTHR(m_pRs.CreateInstance(__uuidof(Recordset)); m_pRs->Open(sql,_variant_t((IDispatch*)m_DBCnt,true),adOpenKeyset,adLockOptimistic,adCmdText); TESTHR(m_pRs->QueryInterface(__uuidof(IADORecordBinding),(LPVOID*)&picRs));
    TESTHR(picRs->BindToRecordset(&rs)); strcpy(rs.m_sz_number,m_number);
    strcpy(rs.m_sz_name,m_name);
    rs.m_lcharaponum=m_charaponum;
    strcpy(rs.m_sz_charaponame,m_charaponame);
    strcpy(rs.m_sz_cases,m_cases);
    strcpy(rs.m_sz_result,m_result);
        
    //update data
    TESTHR(picRs->Update(&rs));

    picRs->Release();
    m_pRs->Close();
    }
    catch(_com_error& e)
    {
    MessageBox(e.ErrorMessage());
    return;
    }
    RefreshBoundData();

    }