CString str;
str.Format(_T("……")); m_pConnection->CursorLocation=adUseServer;
m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
m_pRecordset->Open(str.GetString(),_variant_t( (IDispatch*)m_pConnection,true),
adOpenStatic,adLockOptimistic,adCmdText);这段我放到C...Dlg的一个成员函数里了,m_pConnection和m_pRecordset也是成员变量。那我在调用这个函数之后,在其他的函数里使用SQl语句的时候,还用再
m_pConnection->CursorLocation=adUseServer;
m_pRecordset.CreateInstance(_T("ADODB.Recordset"));
吗?删除一条记录的时候出_com_error,不知道是不是没加这两句的原因

解决方案 »

  1.   

    不需要
    加异常捕获看是什么错误
    try
    {
    //你的ADO代码
    }
    catch (_com_error& e)
    {
    AfxMessageBox(e.Description());
    }
      

  2.   


    Unknow error: 0x800A0E79
    这是个什么错误?
      

  3.   

    把ado初始化代码放到dialog的初始化函数中吧
      

  4.   


    CString DeleteIndex;
    DeleteIndex.Format(_T("DELETE FROM Table_1 WHERE 交易序号='%04d%02d%02d%02d%02d%02d'"),
    datepicked.wYear,datepicked.wMonth,datepicked.wDay,
    timepicked.wHour,timepicked.wMinute,timepicked.wSecond);
    MessageBox(DeleteIndex.GetString(),0,MB_OK); try
    {
    m_pRecordset->Open(DeleteIndex.GetString(),_variant_t( (IDispatch*)m_pConnection,true),
    adOpenStatic,adLockOptimistic,adCmdText);// m_pRecordset->Update();
    // m_pRecordset->Requery(NULL);
    }
    catch(_com_error e)
    {
    CString log;
    log.Format(_T("删除失败,失败原因:%s"),e.ErrorMessage()); Writelog(log);
    }
      

  5.   

    从MessageBox里能看出来,交易序号正确
      

  6.   

    log.Format(_T("删除失败,失败原因:%s"),e.ErrorMessage());
    改成
    log.Format(_T("删除失败,失败原因:%s"),e.Description());