想实现删除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语句则正常.

解决方案 »

  1.   

    _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);
      

  2.   

    2也不行,CAdoRecordSet::Delete(AffectEnum AffectRecords)函数里2是指所有记录;
    而C_Recordset::Delete(long AffectRecords)的函数参数不太清楚,我就是试试,但不行.两个类不一样