好郁闷呀,当一个存储过程有纪录集返回时,一切正常,但一旦存储过程无纪录集时,就发生异常。
 如:
   comand.commandtext="scanAdver";
   RecorderPtr prs=command.execute(NULL,NULL,adCmdProc);
   if(!prs->GetadoEOF()) <==运行到此时,如果无纪录集返回时,程序发生异常
     ......   我也试过prs->GetRecordCount(),prs->adoEOF,都不行。
  快救救俺吧。本来俺都快被老板给逼着要跳楼了,现在又出现这么烦心的问题

解决方案 »

  1.   

    将if(!prs->GetadoEOF()) 改为if(!prs->adoEOF()) 试试
      

  2.   

    也不行呀。
    我的代码大概如下:
    hr=connect.CreateInstance(__uuidof(Connection));
    if(!SUCCEEDED(hr))
       goto error_code;
    hr=connect->Open("DSN=UAdverEMailDB;Uid=sa;Pwd=","","",-1);
    hr=command.CreateInstance(__uuidof(Command));
    if(!SUCCEEDED(hr))
       goto error_code;        command3->ActiveConnection=connect;
            command3->CommandType=adCmdStoredProc;
            command3->CommandText=_bstr_t("ScanNewAdver");
            _RecordsetPtr rs;
            rs=command3.Excute(NULL,NULL,adCmdProc);
            if(rs->adoEOF!=FALSE) //或是 if(!rs->GetadoEOF())   <====此部份如果是空纪录集的话,程序执行这步会异常。
               .....
      

  3.   

    对了,我把的我存储过程列出来:
     select B.Adver_ID as Adver_ID, B.Adver_SendTimeID as Adver_SendTimeID ,
            C.AdverType_ID as AdverType_ID, A.Adver_FileName as Adver_FileName ,
            A.Adver_Document  as Adver_Document
             from AdverTime_tbl B ,adverInfo_tbl A,adverinfo_tbl C
                     where  
                          datediff(minute,GetDate(),B.Adver_SendTime)<=60 
                          and datediff(minute,GetDate(),B.Adver_SendTime)>=0
                          and A.Adver_Status=1
                          and A.adver_id=B.adver_id
                          and C.adver_id=A.adver_id