问题描述:
_RecordsetPtr pRecordSetRemainingSum;//A表的集         //SQL语句
CString ctr_searchRemainingSum;
ctr_searchRemainingSum=CString("select Remain from Citizen where Name=");
ctr_searchRemainingSum+=CString("'");
ctr_searchRemainingSum+=info.m_citizen.GetCitizenName();
ctr_searchRemainingSum+=CString("'"); //查询Num
pRecordSetRemainingSum->Open(_variant_t(ctr_searchRemainingSum),_variant_t((IDispatch *) m_pConnection,true),adOpenKeyset,adLockOptimistic, adModeUnknown);
pRecordSetRemainingSum->MoveFirst(); //得到Num
_variant_t vp_citizenRemain=pRecordSetRemainingSum->Fields->GetItem(_variant_t("Remain"))->Value;
pRecordSetRemainingSum->Close();         //添加NUM,m_pRecordSet为B表的集
m_pRecordSet->Fields->GetItem(_variant_t("Remain"))->PutValue(_variant_t(vp_citizenRemain));我try了一下,catch到了一个内容为空白的exception
即catch (_com_error &e)
e.Description()是没内容的

解决方案 »

  1.   

    Debug调试一下,看看try中那句错误。。
      

  2.   

    设了断点,断点没反应
    这个只是服务器端的部分代码
    这个代码的激活要客户端的某些动作
    结果程序直接走到throw exception(没理断点)
      

  3.   

    调试 看是查询还是插入出的异常附异常查看部分代码:
    try
    {
    ........................
    }
    catch(_com_error &e)
    {
      CString strErrDescribe;
      strErrDescribe.Format("Exception thrown for classes generated by #import"
    "\tCode = %81x\n"
    "\tCode meaning = %s\n"
    "\tSource = %s\n"
    "\tDescription = %s\n",
    e.Error(),
    e.ErrorMessage(),
    (LPCTSTR)(e.Source()),
    (LPCTSTR)(e.Description()));
    TRACE("%s  %s\r\n", (LPCTSTR)e.Source(),(LPCSTR)e.Description());

    char sLog[1024] = {0};
    sprintf(sLog, "%s  %s %s",  e.ErrorMessage(),(LPCTSTR)e.Source(), (LPCSTR)e.Description());
    ............
    }
    catch(...)
    {
    .......
    }
      

  4.   

    用ADO直接执行一条SQL语句:
    INSERT INTO B (SELECT * FROM A WEHRE )
      

  5.   

    捕捉到了
     pRecordSetRemainingSum->MoveFirst();
    有问题?!
      

  6.   

    我用SqlServer2005 新建了查询分析。。SQL语句是OK的哇。。
      

  7.   


    _RecordsetPtr pRecordSetRemainingSum;//A表的集         //SQL语句
        CString ctr_searchRemainingSum;
        ctr_searchRemainingSum=CString("select top 1 Remain from Citizen where Name=");
        ctr_searchRemainingSum+=CString("'");
        ctr_searchRemainingSum+=info.m_citizen.GetCitizenName();
        ctr_searchRemainingSum+=CString("'");    //查询Num
        pRecordSetRemainingSum->Open(_variant_t(ctr_searchRemainingSum),_variant_t((IDispatch *) m_pConnection,true),adOpenKeyset,adLockOptimistic, adModeUnknown);
        //pRecordSetRemainingSum->MoveFirst();
       if (!pRecordSetRemainingSum->rsEoF)
           {
          pRecordSetRemainingSum->Close();
          return;
            }    //得到Num
        _variant_t vp_citizenRemain=pRecordSetRemainingSum->GetFields()->GetItem(_variant_t("Remain"))->Value;
        pRecordSetRemainingSum->Close();         //添加NUM,m_pRecordSet为B表的集
        m_pRecordSet->GetFields()->GetItem(_variant_t("Remain"))->PutValue(_variant_t(vp_citizenRemain));
    试试
      

  8.   

    3楼  tanwei1002用了你的代码,获得的Exception
    是“无效指针,null,null”
      

  9.   

     搞定了,结贴
    谢谢三楼  tanwei1002的
    详细Exception,今天学了一招
    谢谢 rebort_Q 百忙之中抽空在线解答
    两位,一共20分,很少,但是一番心意正解:
      Exception的内容是“空指针,null,null”,根据这个思路搜到了答案
      因为ado是dll,需要初始化(或者说是 实例化),_RecordsetPtr pRecordSetRemainingSum
    没有初始化就直接用了
      加上“pRecordSetRemainingSum..CreateInstance(__uuidof(Recordset))”就OK了