删除Adodc连接当前表的所有记录有关问题

删除Adodc连接当前表的所有记录问题
想实现删除Adodc连接当前表的所有记录,代码如下
nDel   =   AfxMessageBox( "你确定要删除此条短信,单击\ "确定\ "删除!单击\ "取消\ "退出! ",   MB_YESNO);
if   (   nDel   ==   IDYES   )
{
m_ctlAdodc1.GetRecordset().Delete(   3   );
}
问题:
1.执行时出错,提示 "操作在该内容中不被允许 ".但将参数3换为1,即删除当前记录则正常.
不知是什么原因?

2.C_Recordset::Delete(long   AffectRecords)的函数参数是否与下面参数意义一样呢?
BOOL   CAdoRecordSet::Delete(AffectEnum   AffectRecords)
Params:   AffectRecords   该值可以是下列常量之一.
[常量]   [说明   ]  
AdAffectCurrent   1   默认   仅删除当前记录.    
AdAffectGroup   2   删除满足当前   Filter   属性设置的记录.  
adAffectAll   3   删除所有记录.  
adAffectAllChapters   4   删除所有子集记录.  

3.用delete语句实现也出错
strSQL   =   "delete   from   tbRecv ";
m_ctlAdodc1.SetRecordSource(   strSQL   );
m_ctlAdodc1.Refresh();
提示 "对象关闭时,操作不被允许 ",但实际记录可以全部删除.
1)将delete语句改为select语句则正常.

------解决方案--------------------
_RecordsetPtr m_pRecordset;
_CommandPtr m_pCommand;
CString strsql;

m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pCommand.CreateInstance(__uuidof(Command));

m_pCommand-> ActiveConnection = m_pConnection;
m_pCommand-> CommandText = "DELETE FROM mytable ";
m_pCommand-> Execute(NULL, NULL,adCmdText);