现在有两个记录集RS1,RS2 ,我想定义一个新的记录集,用来保存这个两个记录集处理后的数据。
我看下了ADO帮助,说 可以用RecordSet->open方法创建一个空的记录集。但是试了以下可以不行,我把代码贴出来,大家帮我看看,谢谢了 
_RecordsetPtr rsSmelt;
rsSmelt.CreateInstance(__uuidof(Recordset));
rsSmelt->Fields->Append("DATE_TIME",adDate,sizeof(double),adFldUnspecified);
rsSmelt->Fields->Append("DUT",adSingle,sizeof(int),adFldUnspecified);
rsSmelt->Fields->Append("GJB",adSingle,sizeof(int),adFldUnspecified);
rsSmelt->Fields->Append("DJB",adSingle,sizeof(int),adFldUnspecified);
rsSmelt->Fields->Append("DZI",adSingle,sizeof(int),adFldUnspecified);
rsSmelt->Fields->Append("BE",adSingle,sizeof(int),adFldUnspecified);
rsSmelt->Open(_variant_t(" "),pConn.GetInterfacePtr(), adOpenKeyset, adLockOptimistic, adCmdText);
运行到OPEN的时候就跳到异常处理了。
但是要在 定义rsSmelt的时候初始化为Null ,那么open的时候就不出错,但是在下面又错了
rsSmelt->AddNew();
又跳到异常了,百度上搜了下,又找不到这样的。大家帮忙看下,问题出在哪里,谢谢了 

解决方案 »

  1.   

    楼主,你怎么用这种方式往数据库增加记录?好别扭啊,采用以下方式吧:
          _RecordsetPtr m_pRecordset;
          m_pRecordset.CreateInstance("ADODB.Recordset"); 
    CString strsql;
    strsql.Format("select * from [API_Tmp]"); try
    {
               m_pRecordset->Open((_variant_t)strsql,
                                _variant_t((IDispatch *)(papp- >m_pConnection),true),  
                   adOpenStatic,adLockOptimistic,adCmdText);
          
               m_pRecordset->AddNew(); 
              ////kindsof是字段名,FLongID要保存进去的变量, 这些都换成你自已的
               m_pRecordset->PutCollect("kindsof",FLongID);             
               m_pRecordset->PutCollect("name",_variant_t(m_strName)); 
      m_pRecordset->PutCollect("description",_variant_t(m_strLy)); 
               m_pRecordset->Update(); //不能漏了
            if(m_pRecordset->State==TRUE) m_pRecordset->Close();
       
          }
            catch(_com_error err)
    {
      MessageBox(err.ErrorMessage(),"增加失败",MB_ICONERROR|MB_OK);
      if(m_pRecordset->State==TRUE) m_pRecordset->Close();
      m_IsAdd=FALSE;
      return;
    }
      

  2.   

    我以前也试过,RecordSet->open方法创建一个空的记录集是不行的,所以用了一个比较蠢的办法就是先open,查找一个绝对不可能有的记录
    例如:rsSmelt->Open(_variant_t(" select * form mdb where sn='nonononononoon"),pConn.GetInterfacePtr(), adOpenKeyset, adLockOptimistic, adCmdText);然后再添加记录,AddNew();我也想知道怎么创建一个空集,而不会出现异常