这个记录集中有一些记录,我想当第二次使用这个记录集的时候,把
记录集给清空.
我使用了Delete函数,在网上也找了一下
Delete 方法:
BOOL CAdoRecordSet::Delete(AffectEnum AffectRecords)
Params: AffectRecords: AffectEnum 值, 确定 Delete 方法所影响的记录数目, 该值可以是下列常量之一.[常量] [说明 ] 
AdAffectCurrent 默认 仅删除当前记录.  
AdAffectGroup 删除满足当前 Filter 属性设置的记录. 要使用该选项, 必须将 Filter 属性设置为有效的预定义常量之一. 
adAffectAll 删除所有记录. 
adAffectAllChapters 删除所有子集记录. 我使用这个删除所有的记录集的时候,老是出异常.
我把这个异常捕捉了.说一个"在此环境不允许操作"
你们有没有遇到过这样的问题.void ClearADORecordset(_RecordsetPtr &p)
{
try{
p->Delete(adAffectAll);
}
catch (_com_error &e) {
IErrorInfo* pErrorInfo = e.ErrorInfo();
HRESULT hr = e.Error();
if (pErrorInfo)
{
BSTR bsDesc = NULL;
pErrorInfo->GetDescription( &bsDesc );
_bstr_t sDesc( bsDesc, false );::MessageBox(0, sDesc.operator LPCTSTR(), "", MB_OK );pErrorInfo->Release();
}
}
}

解决方案 »

  1.   


    要删除数据库纪录,用SQL "Delete From [表] Where"比较好
      

  2.   

    我想知道为什么.这个Delete是什么情况下才能可以一次性的把全部的都删除呢?
      

  3.   

    在CONNECTION之前加上这句试试
    conn->CursorLocation=adUseClient;
      

  4.   

    用SQL语句吧,那样的话删除效果更高,何必非要用ADO删除呢,ADO用来查询还是不错的:)
      

  5.   

    recordset.Delete AffectRecordsParametersAffectRecords   An AffectEnum value that determines how many records the Delete method will affect. The default value is adAffectCurrent. Note   adAffectAll and adAffectAllChapters are not valid arguments to Delete.
    看最后一句,adAffectAll对Delete函数是无效的!!!!!!!!!!!!!!!
      

  6.   

    看来的确是一个没有用的一个参数啊.谢谢大家了.我使用的这个ADO记录集是一个没有连接到数据库的.是一个我手动的解析xml文档,然后填写进去的.所以,说使用sql语句去删除,可能在这个情况下是没有作用的.好了.接分啦!!